Centos7+使用.htaccess配置301重定向,解决非www域名访问网站

前言

主域名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重定向,很多网站都是采用这种方式处理的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值