我有很多丑陋的链接进入这样的网站:
https://www.somedomain.com/mm5/mch.mvc?Session_ID=5f59c6e0&Screen=PRODFB&Product_Code=pcode1&Category_Code=category_a&Store_Code=store1&fb=1
我正在尝试使用htaccess重新创建网址,如下所示:
https://www.somedomain.com/mm5/mch.mvc?Screen=PROD&Product_Code=pcode1
我想出了这一点,但是当然没有用。我想我只需要能够忽略product_code参数后的其余url参数,但不确定如何执行。
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^Screen=PRODFB&Product_Code=([^/.]+)$ /mm5/mch.mvc?Screen=PROD&Product_Code=$1 [R=301,L,NE]
我想念什么?谢谢!
答案 0 :(得分:1)
您无法匹配RewriteRule
指令中的查询字符串。
只要查询参数与您要查询的参数相同,就可以在网站根目录.htaccess中使用此规则:
RewriteEngine On
RewriteCond %{THE_REQUEST} /(mm5/mch\.mvc)\?.*&Screen=PRODFB&(Product_Code=[^\s&]+) [NC]
RewriteRule ^ /%1?Screen=PROD&%2 [R=301,L,NE]
或使用%{QUERY_STRING}
:
RewriteCond %{QUERY_STRING} (?:^|&)Screen=PRODFB&(Product_Code=[^&]+) [NC]
RewriteRule ^mm5/mch\.mvc/?$ %{REQUEST_URI}?Screen=PROD&%1 [R=301,L,NE]
答案 1 :(得分:0)
我能够使它像这样工作:
RewriteCond %{QUERY_STRING} Screen=PRODFB&Product_Code=([^&]+)
RewriteRule ^(.*)$ /mm5/mch.mvc?Screen=PROD&Product_Code=%1& [R=301,L,NE]