0

当我从手机点击时,我会尝试这样做,我会重定向到手机网站,而从 pc 则意味着普通网站。但是条件不能正常工作。

<IfModule mod_rewrite.c>
  RewriteEngine on


  RewriteCond %{HTTP_USER_AGENT} "{android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile}" [NC]
  RewriteRule ^(.*)$ http://localhost:8080/home.html [L,R=301]

  RewriteCond %{HTTP_USER_AGENT} "!{android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile}" [NC]
  RewriteRule ^abc.html$ /abc1.html [R=301,L]
  RewriteRule ^1.html$ /2.html [R=301,L]

</IfModule>

当我从移动设备点击 localhost 时,我可以正确获取移动网站,但是如果我给 localhost/abc.html 会出现第二个条件,但它实际上应该转到移动网站。代码有问题吗?

4

1 回答 1

1

与其说是答案,不如说是您的方法的一组要点:

  • 为什么在你的条件正则表达式中使用 {} 而不是正确的 () ?
  • 第二个条件是多余的,因为逆总是匹配 prevoius [L] 规则?(规则 3 没有这个条件顺便说一句。
  • RewriteBase /如果你不这样做,你应该使用 a作为引擎有时会感到困惑
  • 省略规则 2 和 3 替换字符串上的前导 /

最后也是最重要的,你为什么要做 301 重定向而不是简单的内部重定向,这样就不需要额外的往返和/或 301 的浏览器缓存?

RewriteCond %{HTTP_USER_AGENT} (android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile) [NC]
RewriteRule ^(.*)$ mobile/home.html [L]

RewriteRule ^abc.html$ abc1.html    [L]

RewriteRule ^1.html$   2.html       [L]
于 2012-07-09T09:25:10.403 回答