天天看点

Rewrite重写

Rewrite重写作用

1) 域名跳转,web服务器有多个域名时,将次域名重定向至主域名,用到重写模块rewrite_module

    例如:www.360buy.com,跳转到www.jd.com

2) 文件跳转,和域名相比,是透明的,隐藏实际目录

    例如:访问192.168.1.1/test,实际访问的是其他目录(如主目录下其他目录test1或者其他虚拟主机网站目录)

一、配置域名301跳转

1. 编辑虚拟主机配置文件/usr/local/apache2/conf/extra/httpd-vhosts.conf

   <IfModule mod_rewrite.c>

     RewriteEngine on                                                          

     # 开启 RewriteEngine引擎

     RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]    

     RewriteCond %{HTTP_HOST} ^www.bbb.com$

     # 重写条件,如果匹配到www.aaa.com,则赋值给变量HTTP_HOST,匹配其他不会赋值,[OR]表示或的关系

     RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L] 

     # 重写规则,.*表示上面变量所有内容,301永久跳转,L结束

  </IfModule>

    注:

       上面几行(2.4版本中),也可以单独写进.htaccess文件中,条件:

        1).htaccess文件必须在aaa、bbb网站目录下

        2)浏览器访问的内容,必须定义Drectory权限

        3)FollowSymlinks 表示其该目录访问其他目录

        4)开启AllowOverride使.htaccess文件生效

  .htaccess文件内容:

        RewriteEngine on

        RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]

        RewriteCond %{HTTP_HOST} ^www.bbb.com$

        RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]

   配置文件:  

       <Directory "/data/www">  

           Options Indexes FollowSymlinks

           AllowOverride All

           Allow from granted

       </Directory>

二、配置文件跳转

        说明:同样道理,配置如下

      1)定义Drectory权限

      2)开启AllowOverride

      3)目录下创建.htaccess文件

      4)在/data/www下创建index_test.html文件

       .htaccess文件内容:

       RewriteEngine on

       RewriteRule abc index_test.html

       配置文件:   

      <Directory "/data/www">  

        在浏览器输入ip/abc,即可跳转

  扩展:

      如一个不道德的人在他自己的网址A做一个302重定向到你的网址B,出于某种原因, Google搜索结果所显示的仍然是网址A,但是所用的网页内容却是你的网址B上的内容,这种情况就叫做网址URL劫持

本文转自 huangzp168 51CTO博客,原文链接:http://blog.51cto.com/huangzp/1906912,如需转载请自行联系原作者

继续阅读