我已將我的網站遷移到新軟件,並試圖確保將舊鏈接正確重定向到新網址。我認爲我一直在努力,直到我收到Google關於增加404的消息。模式匹配htaccess衝突
我似乎將導致新的htaccess需求和我的更改來解決舊的鏈接之間的衝突。
因此,新的鏈接看起來是這樣的:
http://www.exampledomain.com/search/?q=searchterm
而在htaccess的他們拿起這樣的:
RewriteRule ^search/(.*)$ search.php?q=$1
以上工作,因爲它應該。
舊的鏈接可能類似於以下任一:
http://www.exampledomain.com/search/searchterm/
or
http://www.exampledomain.com/search/searchterm
我已經把這個到htaccess的
RewriteRule ^search/(.*)/$ http://www.exampledomain.com/search.php?q=$1 [R=301,NC,L]
如果我不添加的第一個規則,則新的URL只是調出404的。
如果我添加第二條規則,它將停止傳遞的searchterm並與第一條規則衝突。
已經嘗試了一些東西,但認爲必須有匹配或其他我失蹤的問題。
任何想法讚賞。
** **新增
所以我作出改變的建議,並就引起了幾個問題,但交換的規則的順序已經固定的,但還沒有完全解決了該問題
第一答覆後所以現在我有這樣的:
RewriteRule ^search/(.*)/?$ http://www.exampledomain.com/search.php?q=$1 [R=301,NC,L]
RewriteRule ^search/(.*)$ search.php?q=$1
上述工作對於這些網址現在:
http://www.exampledomain.com/search/?q=searchterm
and
http://www.exampledomain.com/search/searchterm
但對於網址是這樣的:
http://www.exampledomain.com/search/searchterm/
它導致這與防止搜索結尾的斜線:
http://www.exampledomain.com/search.php?q=drama/
所以只需要刪除或沒有結尾的斜線
您的問題可能更適合於[serverfault](http://serverfault.com/):) –