查询字符串破页(Query string breaking page)

2019-09-27 17:11发布

传入链路上的谷歌Analytics(分析)查询字符串打破我的网站的显示。

有谁知道为什么下面会造成我的网站无法正确加载其主页(它似乎阻止某些插件的加载该页面需要)

http://mysite.com/?utm_medium=email

虽然这并不:

http://mysite.com/#utm_medium=email

如果你知道为什么,我该如何解决这个问题? 我使用的查询字符串的方法,他们都导致访问者看到一个破碎的网页的导入链接。

所以有需要的站点路由没有查询字符串,该网站使用“漂亮网址”。 我试图简单地删除通过Apache重写查询字符串(这是很容易做到和工作,我在下面的例子),但我认为谷歌Analytics(分析)将无法跟踪,如果我做到这一点需要。

这是我.htaccess的情况下因素是:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# Handle redirection from https to http
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]

# Example of what would strip query strings from url
#RewriteCond %{THE_REQUEST} \?[^\ ]+
#RewriteRule (.*) /$1? [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

额外

除了@ FAA的解决方案,并纳入@爱德华多的位到这个我还需要从受影响排除admin目录。 我这样做,加入:

RewriteCond %{REQUEST_URI} !^\/*(wp-admin)

Answer 1:

虽然这并不: http://mysite.com/#utm_medium=email

如果使用#的作品,是一个有效的选择,而不是在查询中的问号,您可以尝试是这样的:

# Example of what would strip query strings from url
RewriteCond %{QUERY_STRING} .
RewriteRule ^(.*) /$1#%{QUERY_STRING}? [R=301,L,NE,NC]

重定向

http://mysite.com/?query

http://mysite.com/#query



Answer 2:

脚本通常应该忽略,他们没想到的查询参数。 这是一个很好的经验法则,你的脚本之一是忽略。 你将不得不追查这是有问题的脚本,自己解决它。 或在这里提供更多的信息,这将使它更容易解决。 一种用于一个网页,它可以复制网址是一个开始,一个URL我们至少可以为客户端或服务器端的隔离问题。

作为一种变通方法,您可以使用锚来代替:

http://mysite.com/#utm_medium=email

只要确保您配置谷歌分析,了解该URL的锚部内的参数。

只要您之前添加以下_trackPageview调用。

_gaq.push(['_setAllowAnchor', true]);

参考: https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiCampaignTracking#_gat.GA_Tracker_._setAllowAnchor



文章来源: Query string breaking page