0

这应该很简单,但我无法解决问题。我敢肯定,这对某人来说是一秒钟的答案。

我在我的 htaccess 文件中有如下重写:

RewriteCond %{THE_REQUEST} \ /product\.php\?categoryfilename=([A-Za-z0-9-%.]+)&category=([A-Za-z0-9-%.]+)&id=([A-Za-z0-9-]+)
RewriteRule ^ /%3-P.html? [R=301,L]

重写工作如果我输入:

www.mysite.co.uk/product.php?categoryfilename=all-products.php&category=All%20products&id=MY-PRODUCT

它重定向到:

http://www.mysite.co.uk/MY-PRODUCT-P.html

然后我有一个简单的重定向:

重定向 301 /MY-PRODUCT-P.html http://www.mysite.co.uk/MY-PRODUCT-123-P.html ?

这应该是一个静态重定向,但它附加了一个讨厌的 ? 到结果的最后。

如果我删除 ? 从重定向的末尾开始,我从第一个重写器中的原始混乱路径名中附加了 php 变量

非常感谢

4

1 回答 1

0

您无法匹配或操作QUERY_STRINGusingRedirect指令。请改用 mod_rewrite。将此代码放在您的DOCUMENT_ROOT/.htaccess

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/product\.php\?categoryfilename=([^&]*)&category=([^&]*)&id=([^&\s]*)
RewriteRule ^ /%3-P.html? [R=301,L,NE]

RewriteRule ^(MY-PRODUCT)-(P\.html)$ /$1-123-$2? [L,NC,R=301]
于 2013-10-17T07:16:19.683 回答