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">  

           Options Indexes FollowSymlinks

           AllowOverride All

           Allow from granted

       </Directory>


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

  

  扩展:

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