在我最近的项目中,我需要从我的网址中删除一些重复的字符。更具体地说,我想制作这个网址
http://example.com/cgi-bin/file.cgi?ga_option1=a&ga_option2=b&ga_option3=c
成为这个,删除 ga _ 部分
http://example.com/cgi-bin/file.cgi?option1=a&option2=b&option3=c
我试过了:
RewriteEngine On
RewriteBase /cgi-bin/
RewriteRule ^(.*)ga_(.*)$ http://%{SERVER_NAME}/$1-$2 [NC,R=301,L]
和此:
RewriteEngine On
RewriteBase /cgi-bin/
RewriteCond %{QUERY_STRING} "ga_" [NC]
RewriteRule (.*) http://example.com/cgi-bin/file.cgi?$1 [R=301,L]
但没有任何作用。请给我一些建议。感谢。
答案 0 :(得分:0)
这应该有效:
RewriteEngine on
RewriteCond %{THE_REQUEST} /cgi-bin/file\.cgi\?ga_option1=a&ga_option2=b&ga_option3=c [NC]
RewriteRule ^ /cgi-bin/file.cgi?option1=a&option2=b&option3=c [L,R]
如果查询字符串是动态的,请尝试使用
RewriteEngine on
RewriteCond %{THE_REQUEST} /cgi-bin/file\.cgi\?ga_option1=([^&]+)&ga_option2=([^&]+)&ga_option3=([^\s&]+) [NC]
RewriteRule ^ %{REQUEST_URI}?option1=%1&option2=%2&option3=%3 [L,R]
您的#2代码未重定向请求的原因是您将uri附加到uri而不是查询字符串。