首页 文章

?在htaccess文件中重定向301后附加到路径名的末尾

提问于
浏览
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变量

非常感谢

1 回答

  • 0

    您无法使用 Redirect 指令匹配或操作 QUERY_STRING . 请改用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]
    

相关问题