如何在Joomla安装上重写“id”url-parameter?

时间:2013-10-29 15:48:03

标签: php .htaccess mod-rewrite joomla url-rewriting

我们不小心向链接格式错误的客户发送了一些电子邮件。特别是,URL参数被命名为“id”,它应该是“ri”。 我很难设置一个重写规则来处理这些链接并将客户带到正确的位置。在我的重写规则应用并误解之前,似乎Joomla总是“抢夺”“id”参数,从而导致不必要的404错误。

这应该在理论上起作用:

RewriteCond %{QUERY_STRING} id=([slg][^&]+)
RewriteRule ^([den]{2}/)?product/(.*)$ $1product/$2?ri=%1 [L,R=301]

事实上,当我用“xyz =”替换“id =”时,确实有效。但是,“id”没有这样的运气。

我在Joomla中启用了SEF链接和重写功能。以上规则位于根文件夹中的.htaccess文件中(其中还包含Joomla默认重写规则)。 Joomla版本是2.5.14。我需要做些什么来完成这项工作?

2 个答案:

答案 0 :(得分:1)

在.htaccess

之前,joomla无法采取行动

如果您在第一个条件下有这个条件,我会删除L参数,因为它可以阻止Joomla构建自己的重写规则。

如果要检查,如果满足条件,只需写一个rewriteRule http://www.google.com [L],检查ID =参数是否真正被识别

答案 1 :(得分:0)

很少有建议

  • 我建议添加QSA标志。这会将idri参数保留在结果网址中,然后让不同的代码采用他们想要的任何参数
  • 将此规则设为第一条规则
  • 在其他浏览器中测试以避免301缓存问题

建议规则:

RewriteCond %{QUERY_STRING} (?:^|&)id=([slg][^&]+) [NC]
RewriteRule ^([den]{2}/)?product/(.*)$ $1product/$2?ri=%1 [NC,QSA,NE,L,R=301]