捣鼓Apache重写的时候突然发现一个问题 原来的目录判断根本就不起作用
RewriteCond %{REQUEST_FILENAME} !-d
完整的配置如下
<VirtualHost *:8080>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "d:/wamp/www/api"
ServerName bbs.cj.com
<Directory "d:/wamp/www/api">
</Directory>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f #这个是起作用的
RewriteCond %{REQUEST_FILENAME} !-d #这个不起作用
RewriteRule ^/(\w*)/?$ /index.php?code=$1&%{QUERY_STRING} [L]
</VirtualHost>
最后摸索的解决办法有俩
- 把目录判断那句改成 绝对路径 RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
- 把重写规则放到Directory 标签里去
但是我就是不理解 同样是相对路径 !-f就能判断出来 为啥!-d就判断不出来