301重定向
在网络上,重定向(Redirect)就是通过各种方法将网络访问转移到其它位置(例如:网页重定向、域名的重定向)。
而301重定向是一项非常重要的重定向手段,它可以将网页扩展名、网页地址、网站域名等进行重定向,使用户能够访问到你指定的网站内容。
哪些情况下你需要用到301重定向呢?
1.网站调整(如调整了网站目录结构)
2.网址被永久迁移到了新地址
3.域名失效,更换到新域名
4.多域名指向同一实际网站
5.改变网页扩展名
6.将xxx.com域名重定向到www.xxx.com,引导用户使用标准万维网格式域名
包括但不限于我列举的这些情况,你都会需要用到301重定向。那么301重定向到底如何设置呢?
简单的主域名的301重定向
最简单的一种情况,如果你只需重定向网站的主域名,我们看一个耳熟能详的网站京东
如果你想实现这种效果,且域名都在同一个阿里云账号下,在阿里云后台即可实现。
我们在阿里云控制台,找到自己的主机,然后进入主机管理控制台
在主机管理控制台,找到 基础环境设置 ⇒ 301重定向。选择想要被重定向的源域名和重定向的目标域名,设置即可。
如果想要网站下的所有目录文件都重定向到新目录,怎么办呢?
我与阿里云的技术支持确认过,控制台的301重定向设置只能重定向主域名链接,不能重定向目录链接。
.htaccess配置301重定向
这里就要用到一个神奇的技术,Apache的Mod Rewrite模块(Linux/Unix均可),它是一个配置脚本.htaccess,有很多用法。
这个配置脚本是一份规则列表,告知服务器需要做一些什么,将它放在网站根目录下即可生效。
例如,我想将php后缀的网页重定向到html,配置如下:
RewriteEngine On
RewriteRule ^test.html$ test.php
test.html即由test.php重定向产生。
举例几个实际的使用场景。
A.如果一个网站对应多个域名,怎么让多个域名同时指向一个网站?
域名就像一个门牌号, 是用户在互联网上认知记忆一个网站的方式,比如京东以前用360buy.com,看起来京东像跟360有什么关系,所以京东斥巨资买下了jd.com这个短域名。
很多大公司为了品牌保护,会额外注册一些容易误认的域名,京东就同时购买了jingdong.com,防止误解和被利用流量。
如果我有xx1 xx2 xx3 xxn 很多域名,把它全部绑定到主机上不就可以了?NO。
之所以这样不行,是因为多个域名会分摊网站的权重,导致单个域名在搜索引擎的权重降低,影响搜索的自然排名。
这里也需要用到配置脚本.htaccess,我们可以建立xx1 xx2 xx3 xxn多个站点,在xx2 xx3 xxn的站点上分别配置.htaccess,重定向到xx1。
Redirect permanent /
B.主域名和www域名并存
一个网站搭建起来后,最常使用的域名有两种,主域名格式、万维网格式,例如我的网站有 [pintuan001.com]和 [www.pintuan001.com]。
网站通常对这两种格式都会支持,这里同样会导致搜索引擎的权重分摊问题,如果想将网站全目录的访问都规范到www域名,也要用到.htaccess配置。
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^pintuan001.com
RewriteRule ^(.*)$ http://www.pintuan001.com/$1 [R=permanent,L]
强制跳转https,可以避免http和https重复页面导致权重问题,同时搜索引擎对https有一定倾向的支持。
这里有两种实现方式,一是在https配置中打开 http->https 的强制跳转,二是通过.htaccess配置,将目录301重定向到https。
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^pintuan001.com
RewriteRule ^(.*)$ https://www.pintuan001.com/$1 [R=permanent,L]