删除多个参数并重写url Htaccess

时间:2015-02-26 18:15:51

标签: php .htaccess

我正在尝试使用htaccess或其他解决方案重写以下用于SEO和用户友好目的的Url。我已经搜索过并找到了许多答案,但没有一个给我多个参数,我也没有在这方面取得进展。

mysite.com/myfile.php?dept=1&prodid=161&user=2018&ulevel=1&parentcust=1&prodname=My widget

mysite.com/products/mywidget

如果我的窗口小部件有空格或撇号,我需要删除它们。例如,产品Tiger's eye widget应为tigerseyewidgettigers-eye-widget

1 个答案:

答案 0 :(得分:0)

您不必仅使用重写来解决问题。

对于初学者,让我们去掉你的查询字符串:

  • 用户ID&用户级别不属于那里 - 在查询字符串中包含这些是危险的。如果我在浏览器中将其更改为user = 1& ulevel = 5,那么我是否突然管理员可以访问所有区域?相反,使用会话并存储用户ID&在那里
  • 您是否真的需要产品ID以及查询字符串中的产品名称?我会说:删除产品名称,id应该是足够的信息,以便您检索产品名称。
  • parentcust:那是什么?你真的需要在查询字符串中吗?如果我改变了价值怎么办?看起来也属于会话中的某些内容。

剥离之后,你剩下的就是myfile.php?dept = 1& prodid = 161 - 现在这是更容易重写的东西!

如何改写是另一个问题。有很多关于如何将基于查询字符串的请求重写为“漂亮网址”的示例。将Tiger's eye widget更改为tigers-eye-widget也有详细记录。

但是..谁生成这些链接?如果您生成这些链接,为什么不转过它并将您的产品链接到例如mysite.com/tigers-eye-widget.html然后在PHP中将“tigers-eye-widget.html”映射到产品ID 161&部门1?

您的问题应该仅适用于人们可能已添加书签或仍会出现在搜索结果中的旧版网址。但对于那些情况,重定向它们而不是重写它们是完全可以接受的。因此,您可以将映射保留在数据库或文本文件中,使用PHP处理请求并执行301重定向到新URL - 这样您就可以告诉搜索引擎将旧URL替换为新URL,您不必担心关于复杂的多个.htaccess重写规则。