【发布时间】:2012-08-10 03:40:12
【问题描述】:
具体5个搜索结果页面的url包含一些参数。如何删除该参数并使 url 用户友好
【问题讨论】:
标签: concrete5
具体5个搜索结果页面的url包含一些参数。如何删除该参数并使 url 用户友好
【问题讨论】:
标签: concrete5
在 apache 服务器上,我建议您使用 mod_rewrite 模块来使用 RewriteEngine。 使用此模块,您可以为某些内部 URL 指定别名(当然也可以使用参数)。您也可以为此使用 RegEx。
【讨论】:
简短的回答:这可能不值得麻烦。
长答案... 我猜您在使用搜索块时会看到三个查询参数:
第一个参数是进行搜索所必需的,但可以删除其他两个参数。当我构建concrete5主题时,我通常“硬编码”搜索表单的html,以便我可以控制发送哪些参数(基本上,不要为提交按钮提供“名称”,也不包括“search_paths”隐藏字段)。
不过,“查询”参数并不容易摆脱。问题在于,对于搜索,您应该在 URL 中有一个类似的参数。您可以通过使用 javascript 来解决此问题 -- 提交搜索表单时,使用一些 jquery 来重写请求,以便将该参数放在 URL 的末尾(例如,http://example.com/search?query=test 变为 http://example.com/search/test)。然后,正如@tuxtimo 建议的那样,您将重写规则添加到您的 .htaccess 文件中,以获取 URL 的最后一部分并将其视为系统期望的 ?query 参数。但是,如果用户没有启用 javascript,这将不起作用(因此可能也不适用于 Googlebot,这意味着这不会真正为您服务任何 SEO 目的——我进一步认为这是您的真正原因先问这个问题)。
此外,如果您在显示搜索结果的页面下添加另一个页面,您将遇到很多麻烦(因为您有重写规则处理顶部之后的所有内容-级别搜索页面路径作为搜索参数——因此您永远无法真正到达该路径下方存在的地址)。
所以我只需要创建一个干净的搜索表单,它只发送 ?query 参数并保留它——我认为这些表单实际上并没有比 /search-term 更不友好。
【讨论】: