首页 > Web开发 > 详细

apache rewrite_mod 经典疑问解答

时间:2016-12-21 20:31:47      阅读:128      评论:0      收藏:0      [点我收藏+]

1.RewriteRule ^(com\/.*)$ index.php?do=$1

问:上面的规则匹配表达式 "^(.*)$" 匹配的内容是什么

答:匹配内容是URI
站点目录:/d/www
URL:http://127.0.0.1/admin/index.php
对应本地文件:/d/www/admin/index.php,如果是windows文件系统,由于不区分大小写,如果站点下的目录是Admin,那么这里的文件地址会变成:/d/www/Admin/index.php,下面的URI也会跟着变。
URI:admin/index.php,这里的URI是从文件系统去掉站点目录的部分与“%{REQUEST_URI}”有区别的。如果站点下的目录是Admin,URI=Admin/index.php

%{REQUEST_URI}:/admin/index.php,是RUL去掉域名的部分

%{REQUEST_FILENAME}:URL对应本地文件,这里有几点要注意的地方:
1.windows文件系统下,会自动根据本地的文件夹大小写进行转换
2.FILENAME会自动去掉多余的部分,如/d/www/admin/setting/index.php,如果admin是个空文件夹,里面没有任何东西,这里的%{REQUEST_FILENAME}=/d/www/admin/setting,估计apache的文件系统是先从顶级目录往下遍历,当某个目录不存时,则从这个不存在的目录地址中断。



2.无限循环导致报错

重写规则中有多条RewriteRule,某条被匹配到的RewriteRule标签中加了[L],表示停止分析以后规则的重写,为什么后面的规则还是会运行,

答:重写流程中,有任何一条RewriteRule被执行,都会用新的URI重复整个流程,直到整个流程都没有发生重写才结束rewrite程序。

 

apache rewrite_mod 经典疑问解答

原文:http://www.cnblogs.com/godok/p/6208701.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!