这应该很简单,但我无法解决问题。我相信这对某人来说是个秒钟答案。
我在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变量
非常感谢
答案 0 :(得分:0)
您无法使用QUERY_STRING
指令匹配或操纵Redirect
。请改用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]