.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。
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]
你可以在我的网站尝试 pintuan001.com 和 www.pintuan001.com,都会被引导到 www域名下。
C.强制重定向到https
另外,我的网站还配置了https,因此无论你访问 http://pintuan001.com 还是 http://www.pintuan001.com ,都会跳转到https协议下。
强制跳转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]
|