如何忽略Htaccess中url参数字符串的结尾?

时间:2018-09-07 21:12:18

标签: .htaccess

我有很多丑陋的链接进入这样的网站:

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]

我想念什么?谢谢!

2 个答案:

答案 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]