当前位置: 首页 > >

apche IIS .htaccess httpd.ini Rewrite RewriteRule详解

发布时间:

apche IIS .htaccess httpd.ini Rewrite RewriteRule详解


?


1、Rewrite规则简介:


Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。


基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。


基于目录级的(.htaccess),要注意一点那就是必须打开此目录的FollowSymLinks属性且在.htaccess里要声明RewriteEngine on。


2、举例说明:


下面是在一个虚拟主机里定义的规则。功能是把client请求的主机前缀不是www.cwbgj.com和203.81.23.202都跳转到主机前缀为http://www.cwbgj.com,避免当用户在地址栏写入http://cwbgj.com时不能以会员方式登录网站。


NameVirtualHost 192.168.100.8:80


ServerAdmin webmaster@cwbgj.com?



listen 8080

3.Apache mod_rewrite规则重写的标志一览


1) R[=code](force redirect) 强制外部重定向

如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。


8) T=MIME-type(force MIME type) 强制MIME类型

4.Apache rewrite例子集合


?? 在 httpd 中将一个域名转发到另一个域名虚拟主机世界*期更换了域名,新域名为 www.wbhw.com, 更加简短好记。这时需要将原来的域名webhosting-world.com, 以及论坛所在地址 webhosting-world.com/forums/定向到新的域名,以便用户可以找到,并且使原来的论坛 URL 继续有效而不出现 404 未找到,比如原来的http://www.webhosting-world.com/forums/-f60.html, 让它在新的域名下继续有效,点击后转发到http://bbs.wbhw.com/-f60.html, 这就需要用 apache 的 Mod_rewrite 功能来实现。


在中添加下面的重定向规则:


RewriteEngine On

添加了上面的规则以后, 里的全部内容如下:


ServerAlias webhosting-world.com

URL重定向


例子一:


1.http://www.csdn.cc/xxx.php-> http://www.csdn.cc/xxx/?

例子二:


/type.php?typeid=*?? --> /type*.html

5.使用Apache的URL Rewrite配置多用户虚拟服务器


?? 要实现这个功能,首先要在DNS服务器上打开域名的泛域名解析(自己做或者找域名服务商做)。比如,我就把 *.cwbgj.com和 *.semcase.cn全部解析到了我的这台Linux Server上。


然后,看一下我的Apache中关于*.cwbgj.com的虚拟主机的设定。


#*.com,*.osall.net


ServerAdmin webmaster@cwbgj.com



但是,继续看下去,看到...配置了吗?在这里我就配置了URL Rewrite规则。

例子:




RewriteEngine on


RewriteCond %{HTTP_HOST} ^(flowerworld.cn)(:80)? [NC]

?




RewriteRule ^info/([0-9]+).html$ view/infoView.php?pageAction=viewInfo&id=$1 [QSA,L]

RewriteRule ^superMarket/([0-9]+).html$ view/module/superMarketView.php?pageAction=viewSuperMarketInfo&superMarketId=$1 [QSA,L]


RewriteRule ^product/([0-9]+).html$ view/productPostView.php?pageAction=productPostShow&id=$1 [QSA,L]


RewriteRule ^productClass/([0-9]+).html$ view/productView.php?pageAction=productClassIndex&id=$1 [QSA,L]


RewriteRule ^enterprise/([0-9]+)/(.*)-([0-9]+)-([0-9]+)$ view/enterpriseMemberView.php?pageAction=memberShow&id=$1&actionShow=$2&showType=$3&appendId=$4 [QSA,L]

RewriteRule ^news.html$ view/newsView.php [QSA,L]


RewriteRule ^enterprise.html$ view/enterpriseView.php [QSA,L]

RewriteRule ^column/([0-9]+).html$ view/newsView.php?pageAction=column&id=$1 [QSA,L]


RewriteRule ^product/([0-9]+).html$ view/productPostView.php?pageAction=productPostShow&id=$1 [QSA,L]


RewriteRule ^enterprise/([0-9]+)/(.*)-([0-9]+)-([0-9]+).html$ view/enterpriseMemberView.php?pageAction=memberShow&id=$1&actionShow=$2&showType=$3&appendId=$4 [QSA,L]


//结果是 enterprise/32/open-12-13.html

?


http://www.cnblogs.com/ansin/archive/2011/12/12/2285288.html


?



友情链接: