apache域名重定向
2016 年 3 月 18 日
需求
把www.abc.com 301重定向成 abc.com
- 为了SEO,任何一个域名 www和不带www的都应该301到其中一个,
这样能传递权重,而且不至于造成重复内容的不同URL - abc.com对移动端更友好。容易输入。
解决
百度之 apache htaccess 301。
有文章
有工具
总结下步骤
1. 确保apache 有安装rewrite模块,并且开启。
2. VirtualHost 有设置 AllowOverride All
3. .htaccess文件正确编写
RewriteEngine On
RewriteCond %{http_host} ^www.abc.com$ [NC]
RewriteRule ^(.*)$ http://abc.om/$1 [R=301,L]
如果一切正常,我可以很愉快地完成任务了。
!!!但是居然没有生效。。
原因
我有三个VirtualHost,配置的域名分别是aaa.com、bbb.com、ccc.com
当我访问www.bbb.com时,每次都会跳转到aaa.com。
查dns,对比配置文件,都没有问题呀。
突然灵机一动。
是不是www.bbb.com在虚拟host里找不到对应的配置文件,所以自动匹配了按字母序排第1的aaa.com呢?
试一下,去掉aaa.com。
访问www.ccc.com跳转到了bbb.com。
验证成功。
最终解决
分别为几个域名添加www的别名。如
ServerName aaa.com
ServerAlias *.aaa.com
然后愉快地完成了任务。
总结
知识缺乏。
vhosts配置文件
匹配规则
缺乏的知识点有:
1. ServerName是访问域名,ServerAlias提供的访问别名都会重定向到ServerName
2. 匹配规则:
1. 有提供ip地址的优先级最高。(ps:ip地址一般用来区分内网和外网访问)
2. 匹配到了域名
3. 没有匹配到域名,第一个匹配到了端口号的生效。