2011-02-03 100 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,默认的方法仍然踢,网站仍然有效。

对此,延迟应该是可以忽略的。