【问题标题】:.htaccess Redirect 301 to mobile directory - too many redirects ERROR.htaccess 重定向 301 到移动目录 - 重定向太多错误
【发布时间】:2013-10-01 07:41:31
【问题描述】:

嘿,StackOverflow 社区,我在 stackoverflow 上进行了很多搜索以修复我的“重定向过多”错误。 但找不到任何有帮助的东西。我想通过 .htaccess 和 UserAgent 条件重定向到移动目录。找到了一个投票率高的解决方案,如下所示:

重写引擎开启 RewriteCond %{HTTP_USER_AGENT} "android|blackberry|iphone|ipod|ipad|iemobile" [NC] 重写规则 ^(.*)$ http://mysite.com/mobile/$1 [R=301,L]

重定向本身效果很好,但似乎移动浏览器会在循环中添加 /mobile,因此 URL 会变成 http://mysite.com/mobile/mobile/mobile/mobile/mobile/mobile/mobile/mobile 之类的东西,直到我收到错误“由于重定向过多而无法打开站点”。

我的完整 .htaccess 如下所示:

AddType 视频/ogg .ogv 添加类型视频/mp4 .mp4 AddType 视频/webm .webm 重写引擎开启 RewriteCond %{HTTP_USER_AGENT} "android|blackberry|iphone|ipod|ipad|iemobile" [NC] RewriteRule ^(.*)$ http://mysite.com/mobile/$1 [R=301,L]

提前致谢,卢卡斯·蒂托

【问题讨论】:

  • 同样的事情发生了很多次。 htaccess 是否可能位于 mysite.com/mobile 的某个文件夹中?这将是一个递归重定向。

标签: regex apache .htaccess mod-rewrite mobile


【解决方案1】:

用这个替换你的RewriteRule

RewriteCond %{HTTP_USER_AGENT} "android|blackberry|iphone|ipod|ipad|iemobile" [NC]
RewriteRule ^((?!mobile/).*)$ /mobile/$1 [R=301,L]

问题是您无条件在任何 URL 之前添加 /mobile/ 前缀,即使是已经以 /mobile/ 开头的 URL。

【讨论】:

  • 注意:如果在 /mobile 文档中使用实习链接,它们必须指向此文件夹中的文档,否则会再次出现重定向循环错误。例如,我尝试链接到电影文件 ../src/video.mp4。
  • @TITO:希望这个答案能解决您发布的问题。如果您遇到新问题,请随时发布新问题并附上此问题的链接,以便可以独立解决问题。
猜你喜欢
  • 1970-01-01
  • 2017-09-21
  • 2012-10-22
  • 2014-03-22
  • 2012-12-18
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多