2011-02-03 98 views
3

我有一個提交到搜索頁面的表單。我可以在後端處理MOD_REWRITE的東西,但想知道最佳方式是首先將搜索結果頁放在一個很好的格式中。不錯的搜索網址

最好是接收表單提交,然後重定向到一個更好的url結構。在以下示例中,用戶搜索blah

/search.html?searchterm=blah 

哪個重定向到

/search/blah/ 

或CAN I(我的首選方案)做這個使用JavaScript(或jQuery的)用戶後不知何故點擊提交按鈕?

+0

讓您的形式作用是`/搜索/廢話/`,而不是`/search.html?搜索關鍵詞= blah`,讓阿帕奇做的工作適合你。 – 2011-02-03 18:43:56

+0

如果你想搜索`blah /`怎麼辦? – Gumbo 2011-02-03 18:44:40

+0

不,`blah`搜索詞 – Chris 2011-02-03 18:45:29

回答

4

一定要讀這本教程:

基礎知識:

  1. mysql_real_escape_string()搜索項
  2. 刪除所有非α/貨號字符
  3. 地方每一個匹配詞
  4. 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。還有其他的事情要考慮,但對於新手來說是一個很好的起點。

0

你打了什麼搜索API?

您應該可以使用Javascript或jQuery來搜索結果。

0

我會避免使用JavaScript來做到這一點。這不是真的有必要。我可能只是簡單地使用search.php?q=blah,但是如果幹淨的URL對你很重要,那麼就像你提到的那樣重寫search.html?searchterm=blah/search/blah/

我不認爲真的有一種「最好」的方式來設置你的網址。我想可以歸結爲個人偏好,除非使用mod_rewrite所涉及的性能問題我不知道。

0

我想會更好,如果你的提交按鈕的onclick()操作會改變形式的東西的action財產一樣/search/blah/防止您的網站的用戶看到那個醜陋的網址。

0

GET請求對搜索引擎來說相當標準。像/ search?q = blah這樣的URL是相當正常和預期的行爲,您應該能夠按照您的建議使用mod_rewrite完成此操作。

JavaScript/jQuery不是一個好的方法。如果請求在搜索表單中正確構建,它會爲服務器端應該處理的事件(重寫)增加額外的客戶端延遲。

2

從你的問題我猜你想要瀏覽器去搜索/直接等等。你不想被轉發。

做到這一點的唯一方法是使用JavaScript,因爲用GET方法的表單的工作方式是通過定義,不是你想用那種方式。

我會做的就是離開這個形式,因爲它是,並且使用JavaScript攔截點擊按鈕,然後導航至"search/"+escapedSearchTerm。這有一個好處,如果沒有可用的JavaScript,默認的方法仍然踢,網站仍然有效。

對此,延遲應該是可以忽略的。