【发布时间】:2015-04-25 15:55:57
【问题描述】:
如何编写 mod-rewrite 以删除图片网址后的旧跟踪代码。我想发送请求
www.myurl.com/blah/image.jpg%12345
到
www.myurl.com/blah/image.jpg
%12345 跟踪代码始终相同。
【问题讨论】:
-
请至少显示您的文件
标签: apache .htaccess mod-rewrite
如何编写 mod-rewrite 以删除图片网址后的旧跟踪代码。我想发送请求
www.myurl.com/blah/image.jpg%12345
到
www.myurl.com/blah/image.jpg
%12345 跟踪代码始终相同。
【问题讨论】:
标签: apache .htaccess mod-rewrite
%12345 跟踪代码始终相同。
在该字符串的开头%12 被urlencoded 为不可打印的字符,但mod_rewrite 将其视为_。因此,您必须检查REQUEST_URI 的_345 并相应地将其剥离。
%3F345 用于 URL。
如果跟踪代码是 %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}。我在我的一台实时服务器上对此进行了测试以验证它是否有效。
【讨论】: