查询字符串分页

时间:2013-03-18 22:46:06

标签: wordpress .htaccess google-analytics query-string

传入链接上的Google Analytics查询字符串会破坏我网站的显示。

有谁知道为什么以下会导致我的网站无法正确加载其主页(这似乎阻止加载页面需要的一些插件)

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

虽然这不是:

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

如果您知道原因,我该如何解决这个问题?我有使用查询字符串方法的传入链接,它们都导致访问者看到一个破碎的主页。

该网站使用“漂亮的网址”,因此网站路由不需要查询字符串。我尝试通过apache重写删除查询字符串(这很容易做到并且有效,我在下面给出一个例子)但是我认为如果我这样做,谷歌分析将无法跟踪它需要什么。

以下是我的.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的解决方案并将@ Eduardo的内容纳入其中之外,我还需要排除管理目录受到影响。我这样做是通过添加:

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

2 个答案:

答案 0 :(得分:2)

虽然不是这样: 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

答案 1 :(得分:1)

脚本通常应该忽略它们不期望的查询参数。这是一个很好的经验法则,你的一个脚本忽略了。您将不得不追踪哪个是有问题的脚本并自行修复。或者在此处提供更多信息,以便更轻松地进行故障排除。一个可以重现的页面的URL是一个开头,我们至少可以为客户端或服务器端问题隔离一个URL。

作为一种解决方法,您可以改为使用Anchor:

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

请确保您配置Google Analytics以了解网址锚点部分内的参数。

只需在_trackPageview来电之前添加以下内容。

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

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