301重定向是当用户或搜索引擎向网站服务页器发出浏览请求时,服务器返回的HTTP状态码的一种,表示本网页永久性转移到另一个地址,301重定向对网站真正的用途很大一部分是为了用户而设置的,让用户的体验更好,同时还能很好的传递旧网站的权重到新网站。本文主要讲解Linux主机apache服务器网站内页出现死链或者更换链接如何通过.htaccess文件一分钟实现301内页重定向。
何时做301重定向
1.域名权重传递
顶级域名跳转到WWW域名,这是因为顶级域名的权重会大于二级域名,多个不同链接都指向首页,会分散链接权重影响网站排名,做301跳转可以进行权重传递而又不会影响到网站在百度中的权重。
2.死链接处理
对于一个网站出现死链有时候不可避免,网站上线后严格是不允许修改路径的,如果路径修改了就会出现死链。但是出现了死链是做301跳转到新页面还是做404删除页面,一般的说搜索引擎对于网站404错误页面的处理就是将其排名进行下降,然后会把这个页面删除,如果我们的网站存在过多的404页面,会降低搜索引擎对我们网站的友好印象,慢慢的蜘蛛对网站每天的访问和收录速度就会降低,最后会使我们的网站出现快照滞后的现象,同时降低网站权重。
使用301重定向来处理这样就可以保留之前页面上的权重,并且能够将其传递到新的跳转页面。一般的用户访问我们的网站都是随机的,所以对于页面位置是否移动不会注意,即使是老用户他们关心的也只是页面上内容,而不是位置。301重定向的设置要注意细节,再做重定向的跳转应设置到相同或类似的页面,否则这种强制性的跳转行为会影响用户对我们网站印象,也可能会引起搜索引擎的反感会怀疑我们使用作弊跳转手段。
301重定向方法
网站主域名做301跳转WWW的二级域名可以在您购买的虚拟主机控制面板里***作,大部分主机都支持301功能,下面讲的方法主要是通过.htaccess来实现网站内页301跳转。
如果你的网站根目录中已经存在了.htaccess文件,那么你可以直接修改该文件,然后将规则添加进去,如果你的网站根目录中不存在.htaccess文件,你可以先自己创建个htaccess.txt这样的空文件,然后添加如下规则,建成后将htaccess.txt文件上传到网站根目录,然后将htaccess.txt名修改为.htaccess。对于织梦和wordpress博客只要是Linux主机apache服务器都适用,也可以在主机控制面板设置伪静态同样会自动生成找.htaccess个文件。
1. aaa.com 301跳转到 www.aaa.com
RewriteEngine on
RewriteCond %{http_host} ^aaa.com$ [NC]
RewriteRule ^(.*)$ https://www.aaa.com/$1 [R=301,L]
2. www.aaa.com 301跳转到 www.bbb.com
RewriteEngine on
RewriteCond %{http_host} ^www.aaa.com$ [NC]
RewriteRule ^(.*)$ https://www.bbb.com/$1 [R=301,L]
3. www.aaa.com/bbb.html 301跳转到二级域名 bbb.aaa.com
RewriteEngine on
RewriteCond %{http_host} ^www.aaa.com$ [NC]
RewriteRule ^bbb.html$ https://bbb.aaa.com/$1 [R=301,L]
4. www.aaa.com/bbb.html 301跳转到 www.aaa.com/ccc.html
RewriteEngine on
RewriteCond %{http_host} ^www.aaa.com$
RewriteRule ^bbb.html$ https://www.aaa.com/ccc.html$1 [R=301,L]
RewriteCond %{http_host} ^www.aaa.com$ 这个是链接跳转前主域名,不带https://
RewriteRule ^bbb.html$ 这个是要跳转的部分
http: 这个是跳转后的完整链接
相关注释:
1、(.*) 通配符意思及全部匹配;
2、[NC] 在栏目页或者主域名跳转时可以添加,在文章页面不能添加;
3、“bbb.html$ https://www.aaa.com/ccc.html$1",$符合和后面的域名之间有空格;
4、通过.htaccess文件规则跳转方法只有在Linux主机才适用
5、最后修改好文件后,有个特别重要的事项需要说明,如果是wordpress设置的伪静态你把跳转代码放到<IfModule mod_rewrite.c>……</IfModule>之间没有特殊情况不要去点击wordpress后台管理中“设置->固定链接”,因为只要你点击了“固定链接”,系统会将<IfModule mod_rewrite.c>……</IfModule>模块的内容初始化,解决办法就是你可以把代码放到外面。
我的WordPress博客.htaccess文件的部分规则代码
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{http_host} ^www.xiaomseo.com$
RewriteRule ^56$ https://www.xiaomseo.com/56.html [R=301,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
或者你可以这样写,这样点击固定链接就不会受到影响
RewriteEngine On
RewriteCond %{http_host} ^www.xiaomseo.com$
RewriteRule ^56$ https://www.xiaomseo.com/56.html [R=301,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
如果你的网站有大量的死链通过这种单一的方式添加链接就是个力气活了,不过我们可以通过正则表达式进行匹配,只需要写一个通配符链接就全部搞定了,详细内容可以关注我接下来的文章。
比如:RedirectMatch 301 ^/(\d+)$ /$1.html 我加一条这样的规则,只要用户输入www.xiaomseo.com/任何数字 都会跳转到 www.xiaomseo.com/任何数字.html这种带.html后缀的链接。