2013-11-04 103 views
2

我正在查找Apache Rewrite Condition,如果未設置某個URL參數,則會觸發該重寫條件,然後通過添加此參數來重寫URL。 所以基本上如果我的網址看起來像http://www.heco.de/index.php?id=123&catId=456,我希望它重定向到http://www.heco.de/index.php?id=123&catId=456&cHasH=456 第一個參數是一個靜態頁面ID,但catId從一個數字到6位數不等。參數丟失時重寫URL

我試圖通過添加此代碼段對我的.htaccess來實現這一目標:

RewriteEngine On 
RewriteBase/
RewriteCond %{QUERY_STRING} catId=([0-9]{1,6}) 
RewriteCond %{QUERY_STRING} !cHash= 
RewriteRule ^(.*)/?id=123&catId=([0-9]{1,6})$ index.php?id=123&catId=$2&cHash=$2 
#RewriteRule ^(.*)/?id=123&catId=([0-9]+)$ http://www.stackoverflow.com 

唉,它不工作。我試圖通過取消最後一行的註釋來進行測試,但根本沒有發生重定向。因此,我會非常感謝任何見解,想法或進一步的建議......!

Thx提前,

馬丁

回答

1

您不能重寫規則匹配QUERY_STRING。

您可以使用此規則:

RewriteCond %{QUERY_STRING} !(?:^|&)cHash=[^&]+ [NC] 
RewriteCond %{QUERY_STRING} (?:^|&)catId=([0-9]{1,6}) [NC] 
RewriteRule ^index\.php$ $0?cHash=%1 [L,QSA,NC] 
+0

感謝您的快速答覆!它的功能就像一個魅力......! –

+0

很高興知道,請考慮將其標記爲「已接受」,以便將來遇到類似問題的用戶可以輕鬆查看。 – anubhava