【问题标题】:mod-rewrite to remove tracking code from the end of urlsmod-rewrite 从 url 末尾删除跟踪代码
【发布时间】: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


【解决方案1】:

%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&param=value

重写:

http://www.myurl.com/blah/image.jpg

注意:您不能试验它here,因为不支持%{THE_REQUEST}。我在我的一台实时服务器上对此进行了测试以验证它是否有效。

【讨论】:

  • 谢谢,这非常有用。让我意识到跟踪代码不是随机字符,而是以 %3F(不是 %12)开头的字符替换了 ?。如果在 URL 中使用 %3F345 而不是 ?345 ` RewriteCond %{QUERY_STRING} ^345$ RewriteRule (.*) $1? [R=永久]`
  • 我用应该可以在您的浏览器中使用的东西更新了我的答案,因为它可以在我自己的服务器上运行。
  • 这似乎成功了。谢谢,非常感谢您的时间和精力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
  • 2023-01-18
  • 2015-09-01
  • 2019-09-16
相关资源
最近更新 更多