更换?使用#in url来避免缓存破坏

时间:2016-06-15 15:41:15

标签: .htaccess mod-rewrite

我发现Google Analytics的UTM变量破坏了我们的页面缓存。 Google Analytics允许使用哈希而不是问号,所以

http://www.example.com/?utm_source=source&utm_medium=medium

http://www.example.com/#utm_source=source&utm_medium=medium 

实际上是一样的。但是,正如我所说,第一个选项破坏了我们的缓存而第二个选项没有。

当我们生成自己的链接时,我会使用#。但是,Feedburner或dlvr.it等服务会使用?附加UTM广告系列变量,因此我希望.htaccess将所有/?utm...重定向到/#utm...

我知道哈希应该使用NE(No Escape),但老实说我无法弄清楚重写条件和规则应该如何。

规则逻辑应该是 -

RewriteCond: if {path}?{query_string} AND {query_string} has 'utm_source' as a variable,
RewriteRule: redirect to {path}#{query_string} [R,NE,L]

有人可以帮助我这个地方吗?

1 个答案:

答案 0 :(得分:1)

好的,我问了这个问题后不久就得到了一个尤里卡......

解决方案是:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} utm_source
RewriteRule ^ %{REQUEST_URI}#%{QUERY_STRING}? [R,NE,L]
</IfModule>

经过测试和工作......