apache配置301重定向

Apache 301跳转

本问将实现,在Apache配置文件中实现301跳转,在.htaccess文件中实现301跳转;主域名301重定向到www二级域名。

1. Apache模块 mod_alias的 Redirect 和 RedirectMatch命令

上面提到2个命令使用方法相似。而区别就是后者RedirectMatch基于正则表达式匹配对当前的URL发送一个外部重定向语法为:

Redirect [status] URL-path URL
RedirectMatch [status] regex URL

status参数可以使用以下HTTP状态码:
permanent
返回一个永久性重定向状态码(301),表示此资源的位置变动是永久性的。
temp
返回一个临时性重定向状态码(302),这是默认值。
seeother
返回一个"参见"状态码(303),表示此资源已经被替代。
gone
返回一个"已废弃"状态码(410),表示此资源已经被永久性地删除了。如果指定了这个状态码,则URL参数将被忽略。

举例:
APACHE http-vhosts.conf配置文件,添加301重定向代码

Redirect 301 /old/old.htm https://www.360docs.net/doc/3b4299300.html,/new.htm #/old/old.htm重定向到new.htm

Redirect permanent /one https://www.360docs.net/doc/3b4299300.html,/two #同上,permanent指令表示返回永久性重定向状态码301

RedirectMatch 301 ^\/(.*)$ https://www.360docs.net/doc/3b4299300.html,/$1 #全站301重定向到新域名,内页重定向到新域名对应内页。
关于本段的说明,如果写成RedirectMatch 301 ^(.*)$ https://www.360docs.net/doc/3b4299300.html,/$1 , IE9、firefox、chrome返回的结果是不一样的。IE打不开网页提示404,firefox火狐跳转后第一级目录会多出一个/ ,chrome正常打开。为了确保兼容,建议在.htaccess文件中实现301重定向。

2.使用mod_rewrite重写URL方式
APACHE .htaccess

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.mmxf\.net$
RewriteRule ^(.*)$ http\:\/\/mmxf\.sinaapp\.com\/$1 [R=301,L]

在这里判断当前服务器变量HTTP_HOST是否等于https://www.360docs.net/doc/3b4299300.html,,为真就进行重写,按照R=permanent(等同R=301)进行永久重定向,L表示并立即停止重写操作,并不再应用其他重写规则


主域名301重定向到www的二级域名

创建一个.htaccess文件,并将下面提供的代码写入文件内,它可以确保所有来自对https://www.360docs.net/doc/3b4299300.html,的请求都转向到对 https://www.360docs.net/doc/3b4299300.html, 进行请求。记住.htaccess文件一定要放在旧网站的根目录下,并且新网站要和旧网站保持相同的目录结构及网页文件

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*)$ https://www.360docs.net/doc/3b4299300.html,/$1 [R=301,NC]

注意:.htaccess文件只有在使用安装有Mod Rewrite模块的Apache作为WEB服务器的Linux主机上才能起作用

绑定/本地DNS(域名别名跳转)
如果具有对本地DNS记录进行编辑修改的权限,则只要添加一个记录就可以解决此问题。
若无此权限,则可要求网站托管服务商对DNS服务器进行相应设置


DNS服务器的设置
若要将https://www.360docs.net/doc/3b4299300.html,指向https://www.360docs.net/doc/3b4299300.html,,则只需在DNS服务中应增加一个别名记录,可写成:aaa IN CNAME https://www.360docs.net/doc/3b4299300.html,。
如需配置大量的虚拟域名,则可写成:* IN CNAME https://www.360docs.net/doc/3b4299300.html,.
这样就可将所有未设置的以https://www.360docs.net/doc/3b4299300.html,结尾的记录全部重定向到https://www.360docs.net/doc/3b4299300.html,上。

相关文档
最新文档