2012-10-09 236 views
0

我想使用一些別名爲我的apache,使用mod_rewrite,因爲別名不起作用從.htaccessApache別名/重寫重定向循環

比如我想爲article/?id=1別名是about/

當然,一個簡單的事情做的:

RewriteRule ^about\/$ "article\/\?id=1" [L] 

然而,在同一時間,我不希望任何人訪問article/?id=1了,並將301重定向到about/以保留頁面值和果汁。 (因爲否則搜索引擎會認爲它是兩個不同的頁面,並會根據自己的判斷來判斷它。)

所以換句話說,我希望此url只能由其別名提供,並且如果有人請求實際頁面 - 然後301重定向到別名。

這就是問題開始的地方,因爲我寫的另一個重寫規則,我結束了錯誤310(重定向環路):

RewriteRule ^article\/\?id=1$ "about\/" [L,R=301] 

有什麼辦法來解決這個問題......?

回答

0

您需要匹配實際的請求,而不是針對URI,因爲其他規則將簡單地在內部重寫並觸發重定向,導致循環。此外,您無法匹配RewriteRule中的查詢字符串。

RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /article/\?id=1&?([^\ ]*) 
RewriteRule^/about/?%2 [L,R=301]