我想删除一些字符?m=1
&我的网址末尾有?m=0
。出于这个目的,我使用了博客文章How To Forcefully Redirect Blogger Mobile Template To Desktop Template?中的JavaScript,并使用我想要的编辑它,直到一个以下,并且工作正常。
<script type='text/javascript'>
var curl = window.location.href;if (curl.indexOf('m=1') != -1) {curl = curl.replace('m=1', '');window.location.href = curl;}
var curl = window.location.href;if (curl.indexOf('m=0') != -1) {curl = curl.replace('m=0', '');window.location.href = curl;}
</script>
删除我想要的额外字符,然后重定向到新网址,但根据Google,它不是SE友好的,我必须通过301 Redirect
使用.htaccess
来告诉每个搜索引擎这个网址现在改变了。
我的网址显示为http://www.blog.com/2014/08/post-title.html?m=1
&amp; http://www.blog.com/2014/08/post-title.html?m=0
现在......我可以使用.htaccess
和301 Redirect
执行相同操作吗?
答案 0 :(得分:1)
如果您的整个网站上只有此查询字符串,您可以尝试:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^m=1$ [OR]
RewriteCond %{QUERY_STRING} ^m=0$
RewriteRule (.*) $1? [R=301]
答案 1 :(得分:1)
您可以使用mod_rewrite执行此操作。您可以在%{QUERY_STRING}
的条件中检查查询字符串,并使用[R=301]
标志使其成为永久重定向。 QSD
标志将丢弃查询字符串。
在Apache 2.4及更高版本中,您可以使用以下内容:
RewriteCond %{QUERY_STRING} m=[01]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [QSD,R,L]
在Apache的较低版本中,QSD标志不存在。您必须使用一种技巧来覆盖查询字符串,方法是将空查询字符串附加到重写目标。
RewriteCond %{QUERY_STRING} m=[01]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI}? [R,L]
当规则按预期工作时,将R
更改为R=301
。请注意,您应该将此放在之前的任何其他规则中。最有可能的是一个包罗万象的规则,最终将请求发送到您的博客后端,并且您必须在此之前重定向。
答案 2 :(得分:0)
我在这里得到了另一个解决方案,如果上层不适合您,请在.htaccess
文件顶部添加以下代码来尝试此操作...
RewriteEngine On
RewriteCond %{QUERY_STRING} ^m=1$
RewriteRule ^(.*)$ /$1? [R=301,L]
RewriteCond %{QUERY_STRING} ^m=0$
RewriteRule ^(.*)$ /$0? [R=301,L]
以上代码仅在您的网址与http://www.example.com?m=1
相似时有效,但在http://www.example.com?m=1&foo=bar
时则无效。
答案 3 :(得分:0)
你可以使用简单的java脚本重定向用户这个脚本应该放在所有css和js之上,因为一旦用户访问它就必须加载
<script>
if (screen.width <= 800) {
document.location = "http://mobileversionofyourwebsite .com/";
}
</script>