如何编写mod-rewrite以在图片网址后删除旧的跟踪代码。我想发送
的请求 www.myurl.com/blah/image.jpg%12345
到
www.myurl.com/blah/image.jpg
%12345跟踪代码始终相同。
答案 0 :(得分:1)
%12345跟踪代码始终相同。
在该字符串的开头,%12
被urlencoded为不可打印的字符,但mod_rewrite
将其视为_
。因此,您必须检查REQUEST_URI
_345
并将其删除。
%3F345用于网址。
如果跟踪代码为%3F345
,则%3F
被urlencoded为?
,应该被检测为查询字符串。但是,mod_rewrite
似乎并没有抓住这一点,因此我对您的案例使用了两项检查 - 一项针对?
,另一项针对%3F
。如果?
已编码,则此方法有效:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^345 [OR]
RewriteCond %{THE_REQUEST} \%3F345 [NC]
RewriteRule ^(.*)$ %{REQUEST_URI}? [R=301,L]
输入:
http://www.myurl.com/blah/image.jpg?345
http://www.myurl.com/blah/image.jpg%3F345
http://www.myurl.com/blah/image.jpg%3F345¶m=value
重写:
注意:无法对其进行实验here,因为不支持%{THE_REQUEST}
。我在我的一个实时服务器上测试了这个以验证它是否有效。