Web Server 路径映射 HTTP Redirect

网站修改url之后,搜索引擎还是保存的之前的链接,这样通过搜索引擎就无法访问该页面了,所以很需要做路径映射。

一般通过修改.htaccess可以写很多规则。对于apache服务器来说,默认不启用.htaccess,不是万不得已,也不建议启用。所以可以写到/etc/httpd/conf/httpd.conf文件或者网站对应的/etc/httpd/conf.d/xxx.conf文件中。

情况一:直接映射整个域名的根目录

<VirtualHost *:80>
	ServerName www.domain1.com
	Redirect / http://www.domain2.com
</VirtualHost>

<VirtualHost *:80>
	ServerName www.domain2.com
	. . .
	. . .
</VirtualHost>

情况二:映射指定url

Redirect 301 /oldlocation http://www.domain2.com/newlocation
Redirect permanent /oldlocation http://www.domain2.com/newlocation

情况三:根据规则批量映射url

RedirectMatch ^/images/(.*)$ http://images.example.com/$1

上面这个规则就是把所有的/images/XXX的路径映射到images.example.com/下,^表示的当前域名,(.*)$是一个通配符,后面的$1中的1就表示第一个通配符。

情况四:高级的批量映射
比如把mydomain.com/shop/category/EXAMPLE-CATEGORY-NAME映射到mydomain.com/shop-products/EXAMPLE-CATEGORY-NAME
可以使用更强大的RewriteRule

RewriteEngine On 
RewriteRule ^/shop/category/(.*)$ /shop-products/$1 [L,R=301]

需要注意的是RewriteRule和RedirectMatch如果冲突了会造成映射死循环的,两个可以同时用,但是不要做同样的事情。

情况五:http映射到https

RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] # Redirect HTTP to HTTPS on default

Nginx的就参考Reference吧,我没用过。

Reference

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注

13 − 13 =