erwewwewe 发表于 2017-3-16 14:28:02

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$    
   RewriteCond %{HTTP_HOST} ^www.bbb.com$
   # 重写条件,如果匹配到www.aaa.com,则赋值给变量HTTP_HOST,匹配其他不会赋值,表示或的关系
   
   RewriteRule ^/(.*)$ http://www.test.com/$1
   # 重写规则,.*表示上面变量所有内容,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$       RewriteCond %{HTTP_HOST} ^www.bbb.com$      RewriteRule ^/(.*)$ http://www.test.com/$1
配置文件:
       <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劫持


页: [1]
查看完整版本: Rewrite重写