301永久重定向设置和Wp Super Cache导致PHP 301重定向失效
文章目录
- .htaccess代码
- Nginx conf规则
- Windows重定向
- PHP和ASP代码
- 301重定向失效
- 301重定向设置
今天看到henghengzhu.com站长给我的留言,说我的网站不带www的域名不会直接跳转到带www的域名上。我觉得很奇怪,因为一直以为我的域名301永久重定向早在三年前建站时就已经做好了,自己又没有改动代码,怎么会失效呢?
不过后来经过我的测试,发现lamuba.com用浏览器打开后确实不会重定向到www.lamuba.com上,这让我不可思议。因为三年前建站初始自己就设置了PHP代码的301永久重定向,一直相安无事,没有想到三年后301重定向没有了。
所谓301永久重定向,这是SEO中的一个基础名词,在URL规范化中会用到,301永久重定向是所有的重定向方法中唯一符合搜索引擎规则的重定向方法。尤其是在网站更换域名、多域名指向同一网站、网址规范化时301重定向就非常重要了。
为了搞定301永久重定向折腾了一个晚上,最却发现问题出在了Wp Super Cache这个插件上:使用了Wp Super Cache插件后,由于生成了html静态文件,导致PHP代码版本的301重定向失效。可怜我已经用了这个插件有半年多了,居然到现在才知道。。。
关于SEO,虽然好多人像我一样不是很专业,但是学会用一些SEO工具对我们建站还是有一定帮助的:
- 1、死链检测工具:我正在使用的2个免费的中文SEO工具:死链检测和SEO信息查询
- 2、百度SEO工具:百度SEO建议工具很虚幻!Linkadage把谷歌PR变美元很实在
- 3、很老的SEO平台:ranknow检查网站健康状态,傻瓜式在线SEO工具
301永久重定向设置和Wp Super Cache导致PHP 301重定向失效
一、301永久重定向设置Apache服务器.htaccess代码篇
1、如果是你用的Linux主机,一般建议使用.htaccess来做301永久重定向,这样既方便又执行效率高。
2、重定向lamuba.com到www.lamuba.com,请在.htaccess中加入下列代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.lamuba.com$ [NC]
RewriteRule ^(.*)$ https://www.lamuba.com/$1 [L,R=301]
3、重定向www.lamuba.com到lamuba.com,请在.htaccess文件中加入下列代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^lamuba.com$ [NC]
RewriteRule ^(.*)$ https://lamuba.com/$1 [L,R=301]
4、重定向laoyuming.com到www.xinyuing.com,请在.htaccess文件中加入下列代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} !laoyuming.com$ [NC]
RewriteRule ^(.*)$ https://www.xinyuming.com/$1 [L,R=301]
5、重定向laoyuming.com到xinyuing.com,请在.htaccess文件中加入下列代码:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !laoyuming.com$ [NC]
RewriteRule ^(.*)$ https://xinyuming.com/$1 [L,R=301]
6、不同域名下,用301将绑定的其他域名重定向到主域名,例如将freehao123.net和www.freehao123.info统一为www.lamuba.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^freehao123.net$ [OR]
RewriteCond %{HTTP_HOST} ^www.freehao123.info$
RewriteRule ^(.*)$ https://www.lamuba.com/$1 [R=301,L]
7、还有一些SEOer觉得index.php和index.html这样的也要重定向www.lamuba.com,以防止权重分散。
RewriteEngine on
RewriteRule ^index\.php$ https://www.lamuba.com/ [R=301,L]
二、301永久重定向设置Nginx服务器conf规则篇
1、如果你使用的Linux服务器采用的是Nginx,那么你就要先将conf规则下来。具体路径不同的服务器会不同。
2、打开conf文件(如果用的是LNMP0.6一体包则是在/usr/local/nginx/conf/vhost/lamuba.com.conf)
3、正常的话conf一般前面部分是显示是这样的:
server{
listen 80;
server_name www.lamuba.com lamuba.com;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.lamuba.com;
}
4、现在你需要将一段Nginx服务器conf的301永久重定向规则添加在server_name www.lamuba.com lamuba.com; 下面:
if ($host != 'www.lamuba.com' ) {
rewrite ^/(.*)$ https://www.lamuba.com/$1 permanent;
}
5、最后代码conf文件前面的部分应该是显示这样的:
server{
listen 80;
server_name www.lamuba.com lamuba.com;
if ($host != 'www.lamuba.com' ) {
rewrite ^/(.*)$ https://www.lamuba.com/$1 permanent;
}
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.lamuba.com;
}
6、上传该文件覆盖,或者在SSH直接编辑保存。最后执行下列命令,重载配置,完成生效。
/root/lnmp reload
三、Windows VPS和虚拟主机301永久重定向设置
1、如果你正在使用Windows VPS,那么要实现301永久重定向,只需要进入IIS的网站管理控制面板中。
2、找到HTTP重定向,点击进入。
3、在这里输入你想要重定向的网址,下方选择301,保存即可。
4、另外如果你使用的是Windows虚拟主机,可以通过修改httpd.ini来做301永久重定向。
5、根据httpd.ini文件版本号来选择没的301重定向代码。其中1.*的都不支持301,只能是302临时跳转,这个要慎用。
6、下面的代码实现的效果是将lamuba.com重定向到www.lamuba.com。
#ISAPI_Rewrite 1.3 版本(此处为302状态码。)
[ISAPI_Rewrite]
#3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond Host: ^freehao123\.com$
RewriteRule (.*) http\://www\.freehao123\.com$1 [I,R]
-------------------------------------------------------------
# ISAPI_Rewrite 2.x 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond Host: ^lamuba.com$
RewriteRule (.*) https://www.lamuba.com$1 [I,RP]
-------------------------------------------------------------
# ISAPI_Rewrite 3.0 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond %{HTTP:Host} ^lamuba.com$
RewriteRule (.*) https://www.lamuba.com $1 [NC,R=301]
四、301永久重定向设置通用方法:PHP和ASP代码法
1、如果你用的是PHP程序,那么直接在你的PHP程序头部中加入下列代码:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location : https://www.lamuba.com/");
exit();
?>
2、或者用我曾经用的代码,实现的效果是将不带www重定向到带www域名上。
<?php
if($_SERVER['HTTP_HOST'] == 'lamuba.com')
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: https://www.lamuba.com/');
}
?>
3、如果你用的ASP程序,使用下列代码可以实现。
< %
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","https://www.lamuba.com/"
Response.End
%>
4、ASP .NET下的301重定向代码是:
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader ("Location","https://www.lamuba.com/");
}
</script>
五、Wp Super Cache导致PHP 301重定向失效
1、Wp Super Cache是Wordpress博客的一个缓存加速插件,用了Wp Super Cache也快半年多了,也就是直到最近才发现我以前的PHP 301重定向失效了。
2、用站长工具测试了一下,lamuba.com返回的是200代码,
3、查看了一下我的head.php文件,里面的PHP 301永久重定向代码一直存在着。
4、为了证明Wp Super Cache对PHP 301重定向干扰的问题,我在我的Godaddy空间上的Wordpress也安装了Wp Super Cache插件。
5、然后将上述的PHP 301重定向代码放入head.php中,域名重定向到百度首页,如果这段代码生效了那么打开浏览器后应该是百度首页。
6、结果用浏览器打开Godaddy这个博客后,还是WP首页,并没有重定向。
7、而用站长工具测试了一下http返回代码,结果有点怪异:显示301又说没有重定向。
六、网站301永久重定向的正确设置与意义
1、经过我的测试,最后发现用.htaccess来做301永久重定向可以避免Wp Super Cache导致PHP 301重定向失效的问题。
2、而且.htaccess中的代码必须要放在Wp Super Cache的url重写规则之前。
3、实际上,如果你在实际的操作过中添加了上述代码结果测试却不是301,则有可能和我遇到的错误一样了。
4、因为URL标准化的301重定向(以上代码)需要写在其他URL-rewrite代码之前。
5、最后用站长工具测试了一下,看到lamuba.com返回的是301代码就表明301永久重定向成功了。
6、为什么要做301永久重定向?重要性可以从百度对带www和不带www的收录快照中得知。
7、这是我的lamuba.com域名的百度收录快照,不过这在以前是没有单独的显示此域名的快照,因为之前一直做了PHP 301永久重定向。
8、只是最近才悲剧了,lamuba.com突然不显示301重定向了,被百度收录了。而www.lamuba.com这个域名还是正常收录着。
9、两个域名都被收录但是快照不一样,说明如果不做301永久重定向,百度就会把不www和带www的域名当成两个网站来看待,这显然不利于主站的SEO了。
文章出自:免费资源部落 https://www.lamuba.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。