mod_rewrite 模块学习+测试实例
- Posted at April 20th, 2006 13:14
- Filed under 资讯火药库/LINUX/UNIX
rewrite模块要好好研究一下....URL操作的瑞士军刀!
下面收集整理学习过程中碰到的实例,方便自己理解,也希望大家能够交流指正.
1.RewriteBase
RewriteBase指令显式地设置了目录级重写的基准URL。
例:在服务器上虚拟一个microsea的目录这个microsea目录不存在,它对应真实服务器的/home/httpd/html
希望的效果:http://10.10.10.10/microsea/index.html重写为http://10.10.10.10/go.html则有两步:
(1).在httpd.conf下
DocumentRoot /home/httpd/html
ServerName 10.5.17.167
alias /microsea /home/httpd/html
<Directory /home/httpd/html>
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
(2).在/home/httpd/html/.htaccess文件中:
RewriteBase /microsea
RewriteRule ^index\.html$ go.html
2.RewriteCond
定义重写发生的条件
语法:RewriteCond TestString CondPattern [flag]
3.RewriteMap
定义用于关键词查找的映射函数
语法: RewriteMap MapName MapType:MapSource
4.RewriteRule
为重写引擎定义规则
语法:RewriteRule Pattern Substitution
测试实例:将http://10.10.10.10/abc 跳转到http://10.10.10.10/m/?abc
.htaccess文件内容:
RewriteCond %{REQUEST_URI} !^(.+)\.(.+)$
RewriteRule ^(.+[^/])$ http://10.10.10.10/m/?$1
说明: RewriteCond条件判断获得的URI是否符合规定,%{REQUEST_URI}获得的内容为/abc
注意是URI不是URL.
!^(.+)\.(.+)$ !表示否定, ^(.+)\.(.+)$正则表达式,表示xxx.xxx格式的文件,如abc.html或abc.php
整句的意思是判断用户访问http://10.10.10.10/abc时传输到服务器的/abc的内容是否是xxx.xxx的文件,不是则做RewriteRule的动作.是则不满足条件,如用户访问的是http:/10.10.10.10/abc.php这不做跳转动作.
^(.+[^/])$ 正则表达式判断URI是否最后带/ ,如果带/也不做跳转.
http://10.10.10.10/m/?$1 是跳转后的目的URL, $1匹配的是^(.+[^/])$中的()部分内容.
Apache模块 mod_rewrite(中文翻译档)
http://w.yi.org/ftp/FAPM/apache/Apache2/zh/mod/mod_rewrite.html
Apache重写规则的常见应用
http://www.51cto.com/html/2005/0813/1332.htm
mod_rewrite的地址重写
http://www.xcolor.cn/blog/200511261015.shtml
使用 mod rewrite 做域名转发
http://www.cublog.cn/u/2496/?u=http://www.cublog.cn/u/2496/showart.php?id=21174
URL重写指南
http://w.yi.org/ftp/FAPM/apache/Apache2/zh/misc/rewriteguide.html
Posted by microsea
- Tag
- mod_rewrite, rewriterule, 正则表达式
- Response
- No Trackback , 10 Comments
Trackback URL : 无法向此文章发送引用
Comments List
-
ì¢‹ì€ ì˜ì—! 걸출한 ì˜ì—!
-
블로그를 위한 ê°ì‚¬í•©ë‹ˆë‹¤.
-
우수한 ë””ìžì¸!!
-
ê´€ì‹¬ì„ ëŒ. 너가 ì¢‹ì„ ë™ì¼í• ì§€ì ì„.
-
ì •ë§ ê°™ì§€ 않는 블로그!
-
나는 ë°°ì› ë‹¤ 매우…
-
ì •ë³´ë¥¼ 위한 ê°ì‚¬í•©ë‹ˆë‹¤.
-
너는 위치를차가운 만들었다!
-
ìœ ìš©í•œ ì •ë³´. ì¢‹ì€ ë””ìžì¸.
-
아주 ì¢‹ì€ ë‚˜ëŠ” 위치 ê·¸ê²ƒì„ ê°ì‚¬ 좋아한다!
