2012-07-09 61 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