0

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

这在理论上应该有效:

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

事实上,当我将“id=”替换为“xyz=”之类的东西时,它确实有效。但是,“id”没有这样的运气。

我在 Joomla 中启用了 SEF 链接和重写。上面的规则在.htaccess根文件夹的文件中(里面也包含了Joomla默认的重写规则)。Joomla 版本是 2.5.14 。我该怎么做才能完成这项工作?

4

2 回答 2

1

在 .htaccess 之前 joomla 无法采取行动

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

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

于 2013-11-15T14:24:38.110 回答
0

几点建议

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

建议规则:

RewriteCond %{QUERY_STRING} (?:^|&)id=([slg][^&]+) [NC]
RewriteRule ^([den]{2}/)?product/(.*)$ $1product/$2?ri=%1 [NC,QSA,NE,L,R=301]
于 2013-10-29T19:18:04.063 回答