在Apache上实现域名或URL 301 重定向
准备
检测 DNS 域名设置,将 devhitao.com
与 blog.devhitao.com
都指向一个 IP 地址。
查看 /etc/httpd/conf/httpd.conf
文件中重写模块/组件 LoadModule rewrite_module modules/mod_rewrite.so
是否打开,若没有请自行安装;
编辑 httpd.conf 文件1
$ vi /etc/httpd/conf/httpd.conf
若用 DocumentRoot
指向 /var/www/html/blog.devhitao.com
,则应在 httpd.conf 中添写一些配置。(注:为了配置简单,建议使用下面方法)1
2
3
4
5<Directory "/var/www/html/blog.devhitao.com"> # 指定目录下
# ...
AllowOverride All
# ...
</Directory>
注:若嫌上面添加麻烦,直接可修改 httpd.conf 文件配置中1
2
3
4<Directory /> # 代表根目录
Options FollowSymLinks
AllowOverride None # 将 None 改为 All ,表示在根目录都允许重写
</Directory>
在 目录下编辑 .htaccess
文件1
$ vi .htaccess
下面,选择你需要的功能,例如: no-www to www 或 www to no-www,这里我使用的 blog 代替 www。
no-www to www
将不带 www 的域名 301 到带 www 的域名。eg: devhitao.com -> blog.devhitao.com
切换到网站根目录 /var/www/html/blog.devhitao.com
, 在此目录下编辑 .htaccess
文件,添加以下字符,退出保存(esc:wq);1
2
3
4Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^devhitao.com [NC]
RewriteRule ^(.*)$ https://blog.devhitao.com/$1 [L,R=301]
注:可将上面 https,可换成 http,具体看自己需求支持
重启 apache 服务器1
$ service httpd restart
验证1
$ curl -I http://devhitao.com
返回一下部分内容即为配置成功1
2
3
4
5HTTP/1.1 301 Moved Permanently # 重点在这里
Date: Tue, 27 Mar 2018 12:45:22 GMT
...
Location: https://blog.devhitao.com/
...
www to no-www
参考上面部分操作,在 .htaccess
中添加以下配置1
2
3
4RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
验证方式,请参考上面。
参考资料
文档信息
- 版权声明:自由转载-保持署名-非商用-非衍生 ( CC BY-NC-ND 4.0 )