我有一个提交到搜索页面的表单。我可以在后端处理MOD_REWRITE的东西,但想知道以最佳方式获取搜索结果页面的最佳方法。
最好是收到表单提交,然后重定向到更好的网址结构。在以下示例中,用户搜索blah
。
/search.html?searchterm=blah
哪个重定向到
/search/blah/
或者我(我的首选)可以在用户点击提交按钮后以某种方式使用javascript(或jQuery)执行此操作吗?
答案 0 :(得分:4)
绝对应该阅读本教程:
<强>基础:强>
mysql_real_escape_string()
搜索字词+
放在每个匹配的单词SELECT MATCH AGAINST
|| IN BOLEAN MODE
|| LIKE
<强> mod_rewrite的强>
RewriteRule ^search/([^/\.]+)$ search.php?q=$1
PS:链接中的PHP
部分有点过分,因此,例如,您应该使用preg_replace
代替ereg_replace
,而您也可以通过在第一次尝试中完成所有操作来避免剥离空间的额外步骤;您也可以检查stopwords
并根据建议的例外情况优化您的regex
:foo-bar。还有其他事情要考虑,但新手是一个很好的起点。
答案 1 :(得分:2)
从你的问题我收集你希望浏览器直接搜索/等待。你不想被转发。
唯一的方法是使用javascript,因为使用GET方法的表单的方式根据定义不是你想要的方式。
我要做的是保持表单不变,然后使用javascript拦截按钮点击,然后导航到"search/"+escapedSearchTerm
。这样做的好处是,如果没有可用的javascript,默认方法仍然会启动,并且该网站仍然有效。
延迟应该可以忽略不计。
答案 2 :(得分:0)
你打电话给什么搜索API?
您应该可以使用Javascript或jQuery来提取搜索结果。
答案 3 :(得分:0)
我会避免使用JavaScript。这不是必要的。我可能只是简单地使用search.php?q=blah
,但如果干净的网址对您很重要,那么只需像您提到的那样将search.html?searchterm=blah
重写为/search/blah/
。
我认为没有一种“最佳”方式来格式化您的网址。我想这可以归结为个人偏好,除非使用我不知道的mod_rewrite
涉及性能问题。
答案 4 :(得分:0)
如果您的提交按钮的onclick()
操作将表单的action
属性更改为/search/blah/
,阻止您网站的用户看到该丑陋的网址,我认为会更好。< / p>
答案 5 :(得分:0)
GET请求对于搜索引擎来说是相当标准的。像/ search?q = blah这样的URL是相当正常和预期的行为,你应该能够按照你的建议使用mod_rewrite来完成这个。
JavaScript / jQuery不是一个很好的方法。它会为应该在服务器端处理的内容添加额外的客户端延迟(重写),尤其是在搜索表单中正确构造请求时。