我有以下代碼:的.htaccess讓互聯網服務器錯誤
RewriteRule ^(feedback|contact)/? /contact-us\.php?ct=$1 [L]
這是返回Internet服務器錯誤,爲什麼呢?
但是,當我刪除|contact
,它的工作原理。
工作代碼:
RewriteRule ^(feedback)/? /contact-us\.php?ct=$1 [L]
爲什麼它的工作原理,以及更早版本不?
我有以下代碼:的.htaccess讓互聯網服務器錯誤
RewriteRule ^(feedback|contact)/? /contact-us\.php?ct=$1 [L]
這是返回Internet服務器錯誤,爲什麼呢?
但是,當我刪除|contact
,它的工作原理。
工作代碼:
RewriteRule ^(feedback)/? /contact-us\.php?ct=$1 [L]
爲什麼它的工作原理,以及更早版本不?
爲什麼它是一個URI引起無限循環(代碼500),喜歡它的原因:/contact/
因爲你在你的重寫規則匹配以下正則表達式:
^(feedback|contact)/?
然後你在網絡內部轉發匹配的URI :
/contact-us.php?ct=contact
,你可以看到將再次匹配您的正則表達式:^(feedback|contact)/?
和您的規則將再次重定向到/contact-us.php?ct=contact
。這個匹配的&轉發將繼續,直到達到重寫限制並且Apache拋出錯誤。
爲了避免這種情況的循環,你應該使用以下規則:
上述規則將匹配下面的URI:
/contact
/contact/
/contact/foo
/contact/foo/bar
...
但不會匹配 URI:/contact-us.php
從而防止無限循環。
你可以試試:
^(feedback|contact).*? /contact-us\.php?ct=$1 [L]
將匹配該兩種選擇。