【问题标题】:Nice search URLs不错的搜索网址
【发布时间】:2011-06-20 21:19:55
【问题描述】:

我有一个提交到搜索页面的表单。我可以在后端处理 MOD_REWRITE 内容,但首先想知道以良好格式获取搜索结果页面的最佳方法。

最好是接收表单提交,然后重定向到更好的 url 结构。在以下示例中,用户搜索blah

/search.html?searchterm=blah

重定向到

/search/blah/

或者我可以(我的首选)在用户单击提交按钮后以某种方式使用 javascript(或 jQuery)执行此操作吗?

【问题讨论】:

  • 将您的表单操作设为 /search/blah/ 而不是 /search.html?searchterm=blah,让 Apache 为您完成工作。
  • 如果要搜索blah/怎么办?
  • 不,blah 是搜索词
  • javascript 与 url 查询搜索无关,主要是因为安全问题。 url 应该是 SEO 友好的,例如 /search.html?q=the+brown+fox+jump+hover+the+lazy+dog
  • @Chris:我认为 Gumbo 的意思是如何处理搜索词中的/

标签: php javascript jquery html forms


【解决方案1】:

您调用的是什么搜索 API?

您应该能够使用 Javascript 或 jQuery 来获取搜索结果。

【讨论】:

  • 我正在搜索我的网站,它是一个简单的 HTML 表单/PHP 结果页面
【解决方案2】:

我会避免为此使用 JavaScript。这不是真的必要。我可能只是简单地使用search.php?q=blah,但如果干净的 URL 对您很重要,那么就像您提到的那样,将search.html?searchterm=blah 重写为/search/blah/

我不认为真的有“最好”的方式来格式化您的网址。我想这归结为个人喜好,除非使用mod_rewrite 涉及我不知道的性能问题。

【讨论】:

    【解决方案3】:

    我认为如果提交按钮的onclick() 操作将表单的action 属性更改为/search/blah/ 之类的属性会更好,以防止您网站的用户看到那个丑陋的网址。

    【讨论】:

      【解决方案4】:

      GET 请求对于搜索引擎来说是相当标准的。拥有像 /search?q=blah 这样的 URL 是相当正常的预期行为,您应该能够按照您的建议使用 mod_rewrite 来完成此操作。

      JavaScript/jQuery 不是解决这个问题的好方法。对于应该在服务器端处理(重写)的事情,它会增加额外的客户端延迟,尤其是在搜索表单中正确构造请求的情况下。

      【讨论】:

        【解决方案5】:

        您当然应该阅读本教程:

        基础知识:

        1. mysql_real_escape_string()搜索词
        2. 删除所有非 Alpha/Num 字符
        3. 在每个匹配的单词之间放置+
        4. 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。还有其他事情需要考虑,但对于新手来说是一个很好的起点。

        【讨论】:

        • 您是否需要更加小心地保留原始搜索字符串?否则 foo-bar 最终将与 foo_bar 或 foo%bar 相同 - 如果您的搜索引擎有点技术性,这可能很重要......
        • 仅搜索邮政编码和地点,因此无需担心技术问题 - 值得一提!
        【解决方案6】:

        根据您的问题,我收集到您希望浏览器直接进入搜索/等等。你不想被转发。

        做到这一点的唯一方法是使用 javascript,因为带有方法 GET 的表单的工作方式根据定义不是你想要的那样。

        我要做的是将表单保​​持原样,并使用 javascript 拦截按钮单击,然后导航到 "search/"+escapedSearchTerm。这样做的好处是,如果没有可用的 javascript,默认方法仍然会启动,并且站点仍然可以工作。

        延迟确实应该可以忽略。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-25
          • 2014-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多