网站修改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吧,我没用过。