2012-07-09 20 views
0

我试图做到这一点,当我从手机重新定向到手机网站,从PC意味着正常的网站。但条件不能正常工作。2个条件在相同的.htaccess文件中。

<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> 

当我从移动设备打本地主机我得到移动网站正常,但如果我给本地主机/ abc.html第二个条件进入画面,但它实际上应该去移动网站。代码的任何问题?

回答

1

与其说是ANS,而是一组点重新您的方法:

  • 为什么{}在COND正则表达式,而不是正确的是()?
  • 第二个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] 
+0

我有疑问,在过去的2个重写规则U表示不使用301重定向,这些页面不会退出这些只是为了保持旧的URL'为谷歌和书签的URL。你仍然认为301不是必需的。那么我什么时候需要301? – Hacker 2012-07-09 09:36:36

+0

正是在这种情况下,您描述了:URI(不再存在)的位置,并且您希望传入浏览器知道新位置。 – TerryE 2012-07-11 11:46:37

相关问题