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劫持