Apache Rewrite实现URL的跳转和域名跳转
Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的()和目录级的(.ess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。
基于服务器级的()有两种方法, on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。
基于目录级的(.ess), RewriteEngine on。
2、举例说明:
。, 避免相同内容的网页有多个指向的域名,如。
NameVirtualHost :80
ServerAdmin slj@
DocumentRoot “/web”
ServerName
RewriteEngine on #打开rewirte功能
RewriteCond %{HTTP_HOST} !^ [NC] #声明Client请求的主机中前缀不是, 其中[NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^ [NC] #,其中[NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^$ #声明Client请求的主机中前缀不为空
RewriteRule ^(.*) / [L] #含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到/,[L]意味着立即停止重写操作,并不再应用其他重写规则。这里的.*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个
标记,(.*)字符。
的域名时跳转到http:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^ [NC]
RewriteRule ^(.*) / [L]
,新域名为, 更加简短好记。这时需要将原来的域名ss., 以及论坛所在地址ss./bbs/定向到新的域名,以便用户可以找到,并且使原来的论坛 URL 继续有效而不出现 404 未找到,比如原来的http://ss./bbs/tread-, 让它在新的域名下继续有效,点击后转发到http://bbs./tread-,而其他网页,如原先的http: //ss./purchase不会到二级域名bbs./purchase上,而是到 chase
按照这样的要求重定向规则应该这样写:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/bbs/
RewriteRule ^bbs/(.*) http://bbs./$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !^/bbs/
RewriteRule ^(.*) /$1 [R=permanent,L]
mod_rewrite规则重写的标志一览
1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为
apache rewrite实现url的跳转和域名跳转 来自淘豆网m.daumloan.com转载请标明出处.