[原创] 为什么要使用 RewriteBase ?-(1)
时间:2008-03-12 来源:ailms
情况一 :
配置 :
Alias /mydir /var/www/mydir
RewriteLog /var/log/httpd/rewrite_log
RewriteLogLevel 9
<Directory /var/www/mydir>
RewriteEngine On
RewriteRule ^default\.html$ index.html
</Directory>
HTTP 请求 :
http://172.17.64.34/mydir/default.html
![](/bbs/images/bf8c6f70fe3c549415cc0279877b5bd4.png)
Rewrite log 内容 :
![](/bbs/images/76d7c1784dda944d0b82cd961a060511.png)
错误分析 :
-)1、首先 /mydir/default.html → /var/www/mydir/default.html
-)2、在 Rewrite 前先去掉物理路径前缀(/var/www/mydir/) 剩下 default.html
-)3、default.html 匹配 RewriteRule 的 ^default\.html$ ,所以被改写为 index.html
-)4、再加上原来的物理路径前缀 → /var/www/mydir/index.html
-)5、由于没有定义 RewriteBase ,所以不会对上面的 /var/www/mydir/index.html 再做处理,而是发出一个内部重定向
-)6、GET /var/www/mydir/index.html ,由于第一个 / 是相对于 DocumentRoot 的,所以变成请求的文件是 /var/www/html/var/www/mydir/index.html ,
自然找不到该文件
-)7、返回 404 错误