前言
主域名abc.com,二级域名www.abc.com
近日网站做SEO,域名www加或不加,都要能访问到网站
www的二级域名使用了阿里云的CDN加速,cname值不能对应多个域名,一开始便将主域名解析到了源站IP
所以主域名不会CDN加速,所以当时想是否可以用主域名再申请一个CDN加速域名配置
想办法中......
在阿里云的DNS解析中,有一项显性302暂时性的重定向的设置
就想为什么没有301呢,后来发现301一般直接在服务器上设置,阿里云DNS暂时不提供此项服务
301是永久性重定向(搜索引擎会自动覆盖之前旧的页面),302是暂时性重定向(搜索引擎会保留旧页面,会把重定向的内容当作暂时性的处理)
之前一直用nginx,新服务器上安装的Apache( httpd )
解决问题:使用Apache mod_rewrite或Rewrite模块,配置.htaccess文件
命令行find -name httpd.conf,找到httpd.conf文件,默认配置文件位于/etc/httpd/conf/httpd.conf
,CentOS 7上的Rewrite模块是默认启用的
如没有,请添加或解除注释
LoadModule rewrite_module modules/mod_rewrite.so
vi httpd.conf 编辑文件,ctrl+f 找到DocumentRoot(根目录设置),查看网站默认的目录
找到默认目录的Directory标签,如:<Directory "/var/www/html>......
更改AllowOverride None
为:AllowOverride All
重启服务
systemctl restart httpd
查阅资料提示,根据 Apache 官方的介绍,.htaccess 文件属于分布式配置文件,可以放置在网站 www 根目录的所有子目录、以及 www 根目录的上一级目录中,生效的路径总是当前目录及其所有子目录(可在文件中自定义)
故,可在网站默认目录var/www/html下面创建.htaccess文件( 新建一个文件,直接另存为.htaccess,不要后缀名 ),
将www重定向到非www
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
将非www重定向到www
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
保存并退出。变更应立即生效。请注意,如果您使用的是HTTPS,则应将该RewriteRule
行中的“http”更新为“https”
可使用此curl命令进行测试
curl -I http://abc.com
返回如下所示:
HTTP/1.1 301 Moved Permanently
Date: Mon, 04 May 2015 16:05:26 GMT
Server: Apache/2.4.6 (CentOS)
Location: http://www.abc.com/
Content-Type: text/html; charset=iso-8859-1
搞定!
301重定向,很多网站都是采用这种方式处理的。