我正在尋找重寫搜索鏈接的最佳方法。在我的網站我有:重寫搜索htaccess
http://domain.com/search.php?keyword=blue+widget&Search=Search
我想這個落得:
http://domain.com/blue-widget
有沒有數據庫,只是直接HTML/CSS。
在此先感謝。
我正在尋找重寫搜索鏈接的最佳方法。在我的網站我有:重寫搜索htaccess
http://domain.com/search.php?keyword=blue+widget&Search=Search
我想這個落得:
http://domain.com/blue-widget
有沒有數據庫,只是直接HTML/CSS。
在此先感謝。
我想你想要做的事更接近這一點:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ search.php?keyword=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ search.php?keyword=$1
賈森的回答只有一個實例的情況下工作。
UPDATE:
您可以添加更多的字符正則表達式部分,讓他們。例如,允許*
,這樣做:
^([a-zA-Z0-9_-*]+)$
如果有人直接在URL中使用人品不好,你可以將其重定向到一個404頁。但是,如果您根據用戶輸入的內容來調用用戶的URL,則可以在將錯誤字符的值發送到以404頁爲結尾的URL並通知用戶之前,檢查其值。
重寫規則可以反過來工作。所以鏈接將blue-widget
這將改寫爲search.php
RewriteEngine On
RewriteBase/
RewriteRule ^/blue-widget$ /search.php?keyword=blue+widget&Search=Search [L]
注:如果您接受額外的查詢字符串參數,你就需要使用QSA
標誌。
我需要以這種方式更改任何搜索參數,Jason。我可以在該規則的第一部分和第二部分使用通配符嗎?理想情況下,我也需要一些衛生消毒。 – Sara44
如果'search.php'鏈接當前存在並且需要'重定向',則OP提供的示例仍然有效。無論哪種情況,您的答案都是必要的,但不排除重定向的必要性。 – clmarquart
@ Sara44,我會鼓勵你更新你的問題,因爲這個需求沒有被傳達。 –
OP中沒有中繼動態關鍵字。儘管如此,如果是這樣的話,只要他們進行一些「關鍵字」清理即可。 –
這很好Woz,謝謝。如果我使用像*這樣的字符進入主機的404頁面,我是否可以將此代碼調整到我的文件之一(如404.php),甚至只是去掉違規字符並轉到search.php? – Sara44
我想你只是想添加你想接受的任何字符到正則表達式部分,如下所示:'^([a-zA-Z0-9 _- *] +)$'。我的猜測是,指定接受的字符比試圖禁止某些邪惡字符(白名單與黑名單)更安全。 – woz