同一.htaccess文件中的2个条件。

时间:2012-07-09 05:02:19

标签: apache .htaccess

我试图这样做,当我从移动设备点击移动到移动网站,从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第二个条件进入图片,但它实际上应该去移动网站。代码有问题吗?

1 个答案:

答案 0 :(得分:1)

不是一个ans,而是一套点你的方法:

  • 为什么在你的cond regexp中使用{}而不是正确的()?
  • 第二个cond是多余的,因为反转将始终匹配prevoius [L]规则? (规则3没有这个cond BTW。
  • 如果你没有
  • ,你应该使用RewriteBase /作为引擎
  • 省略领先/上规则2和3替换字符串

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

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]