使用htaccess从url中删除字符串

时间:2016-06-09 15:38:24

标签: apache .htaccess redirect strip

在我最近的项目中,我需要从我的网址中删除一些重复的字符。更具体地说,我想制作这个网址

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]

但没有任何作用。请给我一些建议。感谢。

1 个答案:

答案 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而不是查询字符串。