我有一個提交到搜索頁面的表單。我可以在後端處理MOD_REWRITE的東西,但想知道最佳方式是首先將搜索結果頁放在一個很好的格式中。不錯的搜索網址
最好是接收表單提交,然後重定向到一個更好的url結構。在以下示例中,用戶搜索blah
。
/search.html?searchterm=blah
哪個重定向到
/search/blah/
或CAN I(我的首選方案)做這個使用JavaScript(或jQuery的)用戶後不知何故點擊提交按鈕?
我有一個提交到搜索頁面的表單。我可以在後端處理MOD_REWRITE的東西,但想知道最佳方式是首先將搜索結果頁放在一個很好的格式中。不錯的搜索網址
最好是接收表單提交,然後重定向到一個更好的url結構。在以下示例中,用戶搜索blah
。
/search.html?searchterm=blah
哪個重定向到
/search/blah/
或CAN I(我的首選方案)做這個使用JavaScript(或jQuery的)用戶後不知何故點擊提交按鈕?
一定要讀這本教程:
基礎知識:
mysql_real_escape_string()
搜索項SELECT MATCH AGAINST
之間的+
|| IN BOLEAN MODE
|| LIKE
mod_rewrite的
RewriteRule ^search/([^/\.]+)$ search.php?q=$1
PS:的PHP
部分中的鏈接是有點outofdate,所以,比如說你應該使用preg_replace
代替ereg_replace
,你也可避免在第一次嘗試中完成所有這些都是剝離空間的額外步驟;您也可以檢查stopwords
並根據建議的ex .: foo-bar改進您的regex
。還有其他的事情要考慮,但對於新手來說是一個很好的起點。
你打了什麼搜索API?
您應該可以使用Javascript或jQuery來搜索結果。
我會避免使用JavaScript來做到這一點。這不是真的有必要。我可能只是簡單地使用search.php?q=blah
,但是如果幹淨的URL對你很重要,那麼就像你提到的那樣重寫search.html?searchterm=blah
到/search/blah/
。
我不認爲真的有一種「最好」的方式來設置你的網址。我想可以歸結爲個人偏好,除非使用mod_rewrite
所涉及的性能問題我不知道。
我想會更好,如果你的提交按鈕的onclick()
操作會改變形式的東西的action
財產一樣/search/blah/
防止您的網站的用戶看到那個醜陋的網址。
GET請求對搜索引擎來說相當標準。像/ search?q = blah這樣的URL是相當正常和預期的行爲,您應該能夠按照您的建議使用mod_rewrite完成此操作。
JavaScript/jQuery不是一個好的方法。如果請求在搜索表單中正確構建,它會爲服務器端應該處理的事件(重寫)增加額外的客戶端延遲。
從你的問題我猜你想要瀏覽器去搜索/直接等等。你不想被轉發。
做到這一點的唯一方法是使用JavaScript,因爲用GET方法的表單的工作方式是通過定義,不是你想用那種方式。
我會做的就是離開這個形式,因爲它是,並且使用JavaScript攔截點擊按鈕,然後導航至"search/"+escapedSearchTerm
。這有一個好處,如果沒有可用的JavaScript,默認的方法仍然踢,網站仍然有效。
對此,延遲應該是可以忽略的。
讓您的形式作用是`/搜索/廢話/`,而不是`/search.html?搜索關鍵詞= blah`,讓阿帕奇做的工作適合你。 – 2011-02-03 18:43:56
如果你想搜索`blah /`怎麼辦? – Gumbo 2011-02-03 18:44:40
不,`blah`搜索詞 – Chris 2011-02-03 18:45:29