2010-08-21 63 views

回答

8

你想用mod_rewrite實現所謂的「301重定向」。

RewriteEngine ON 
RewriteRule ^/search\?keywords=somesearchterm$ /search/somesearchterm 

加入正則表達式:

RewriteEngine ON 
RewriteRule ^/search\?keywords=(.+) /search/$1 [R=301,L] 

R=301手段提供了301頭重定向,以便在瀏覽器用戶的URL變化,L手段不處理任何更多的重寫規則,如果這一個匹配。


如果你想要做反向 - 換句話說,如果有人去mysite.com/search/asearchterm和你想要的網址保持不變,但「幕後」你想讓它加載某些服務器腳本,這樣做:

RewriteEngine ON 
RewriteRule ^/search/(.+) /search.php\?keywords=$1 [L] 
0

看看我的答案爲另一個類似的線程!

Simulate file structure with PHP

這應該是你一個體面的答案!

+0

尼斯方法和答案以及編碼的其他問題,但爲什麼這個問題不僅僅是「添加評論」,因爲你對這個問題的回答根本不是答案,鏈接是記錄你的答案,答案應該包含回答問題的信息,而不僅僅是某個其他頁面的URL – jagb 2016-09-21 17:12:35

0

您無法在RewriteRule指令中匹配aginst查詢字符串。使用%{THE_REQUEST}或%{QUERY_STRING}服務器變量相匹配的查詢字符串:

以下規則工作正常,這種重定向

RewriteEngine On 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/search\?kewords=([^&\s]+) [NC] 
RewriteRule^/search/%1? [NE,NC,R,L] 

RewriteRule ^search/([^/]+)/?$ /search?keyword=$1 [QSA,NC,L] 
相關問題