2

我正在寻找一个 Apache 重写条件,如果未设置某个 URL 参数,则会触发该条件,然后通过添加此参数来重写 URL。所以基本上如果我的 URL 看起来像http://www.heco.de/index.php?id=123&catId=456,我希望它重定向到http://www.heco.de/index.php?id=123&catId =456&cHasH=456 第一个参数是静态页面ID,但是catId从一位数到6位不等。

我试图通过将此代码片段添加到我的 .htaccess 中来实现这一点:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} catId=([0-9]{1,6})
RewriteCond %{QUERY_STRING} !cHash=
RewriteRule ^(.*)/?id=123&catId=([0-9]{1,6})$ index.php?id=123&catId=$2&cHash=$2
#RewriteRule ^(.*)/?id=123&catId=([0-9]+)$ http://www.stackoverflow.com

唉,它不工作。我尝试通过取消注释最后一行来测试它,但根本没有发生重定向。因此,我将非常感谢任何见解、想法或进一步的建议......!

提前谢谢,

马丁

4

1 回答 1

4

您无法匹配 RewriteRule 中的 QUERY_STRING。

您可以使用此规则:

RewriteCond %{QUERY_STRING} !(?:^|&)cHash=[^&]+ [NC]
RewriteCond %{QUERY_STRING} (?:^|&)catId=([0-9]{1,6}) [NC]
RewriteRule ^index\.php$ $0?cHash=%1 [L,QSA,NC]
于 2013-11-04T17:50:36.330 回答