2014-01-28 88 views
0

如果我有以下規則:Apache的mod_rewrite的規則

Rewrite 301 /page/22 http://newdomain.com/ 
Rewrite 301 /page/23 http://newdomain.com/test 
Rewrite 301 /page/24 http://newdomain.com/test2 
Rewrite 301/http://newdomain.com 

將在頂部的規則優先於規則我在底部? 而且會使用:

Rewrite 301/http://newdomain.com 

重定向不被其他規則到新的域捕獲的所有要求? 或者只有在URL後面跟着斜槓的domainName.com時它纔會起作用?

而且也是我需要在規則中逃脫一個問號,例如:

Redirect 301 /items/item/94?Test123 http://newdomain.com 

回答

0

將在頂部的規則接管規則我在底部的優先級?並將使用:

規則的順序很重要,因爲規則按照它們出現的順序應用。雖然,Rewrite不是有效的apache指令。有Redirect,它是mod_alias的一部分,RewriteRule是mod_rewrite的一部分。

Rewrite 301/http://newdomain.com

假設你實際上意味着Redirect這裏,這將重定向所有請求未得到由以前的規則抓獲。這是因爲Redirect將兩個URL路徑鏈接在一起,所以在/之後的任何內容都會傳遞給目標。你可能也想/http://newdomain.com

末又辦,我需要在規則中逃脫一個問號,例如:

號的Redirect語句不會對陣查詢字符串或URL中的?之後的所有內容。唯一可以匹配查詢字符串的方法是使用mod_rewrite和%{QUERY_STRING}變量。相當於你想要做的將是:

RewriteCond %{QUERY_STRING} ^Test123$ 
RewriteRule ^items/item/94$ http://newdomain.com/ [L,R=301] 
+0

感謝兄弟,我尊重你兄弟。 (說像斯坦馬什) – user1290717

+0

是的,我的意思是重定向沒有重寫(該死!) – user1290717