[原创] 为什么要使用 RewriteBase ?-(2)
时间:2008-03-12 来源:ailms
情况二 :
配置 :
Alias /mydir /var/www/mydir
RewriteLog /var/log/httpd/rewrite_log
RewriteLogLevel 9
<Directory /var/www/mydir>
RewriteEngine On
RewriteBase /mydir # 注释 :等于 Alias 中指定的别名,这里不是以 / 结尾,但换成 /mydir/ 也没有问题
RewriteRule ^default\.html$ index.html
</Directory>
请求 :
Http://172.17.64.34/mydir/default.html
URL 和 linux 中的路径一样,连续的 // 会被替换成1个 / 而已,
就像下面一样,所以不用担心 RewriteBase /mydir/ 结尾的 / 会导致什么问题
![](/bbs/images/d7e9b8f02c53986ecee0262911b2bbef.png)
Rewirte log 内容 :
![](/bbs/images/f6a72bbd422122ee75c8af20c048fc15.png)
步骤分析 :
-)1、/mydir/default.html → /var/www/mydir/default.html (Alias 语句的作用)
-)2、去掉物理路径前缀 (/var/www/html/mydir/),剩下 default.html
-)3、由于匹配 RewriteRule 规则,改写为 index.html
-)4、加上物理前缀 → /var/www/mydir/index.html
-)5、由于设置了 RewriteBase ,所以把 /var/www/mydir/ 替换为 /mydir (注意,这里是 /mydir ,不是 /mydir/ )→ /mydir/index.html
-)6、发生内部重定向
-)7、GET /mydir/index.html ,实际就是指向 /var/www/mydir/index.html (Alias 语句的作用)
-)8、由于还是访问 <Directory /var/www/html/mydir> ,所以还是需要进行检查。去掉 /var/www/mydir/ 剩下 index.html 和 ^default\.html$ 比较,不匹配,
所以不改写
-)9、直接返回该文件 /var/www/mydir/index.html