![为什么没有考虑在 mod_rewrite 中排除文件夹](https://linux22.com/image/570343/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%B2%A1%E6%9C%89%E8%80%83%E8%99%91%E5%9C%A8%20mod_rewrite%20%E4%B8%AD%E6%8E%92%E9%99%A4%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我想为某个目录排除 mod_rewrite。
我希望文件夹“phd_application”不被重写,也就是说,当一个url指向
www.myserver.com/phd_application
它进入该文件夹。
它在上传到网络服务器时可以工作,但在本地却不行,我不明白为什么。我在本地和远程有相同的 .htaccess 文件。我遗漏了什么?
我有以下 .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(phd_application/) - [L]
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
.htaccess 所在目录的内容
-rwxr-xr-x 1 183 Dec 19 12:43 .htaccess
drwxr-xr-x 13 18 Dec 13 15:44 app
lrwxrwxrwx 1 15 Dec 13 14:48 cake -> ../CakePHP/cake
-rwxr-xr-x 1 1850 Dec 13 15:14 index.php
drwxr-xr-x 3 8 Dec 19 12:46 phd_application
lrwxrwxrwx 1 18 Dec 13 14:49 plugins -> ../CakePHP/plugins
lrwxrwxrwx 1 18 Dec 13 14:50 vendors -> ../CakePHP/vendors
答案1
日志说了什么?在本地机器上启用 rewritelog 并检查会发生什么。
仅供参考,使用 RewriteCond 从全局重写中排除一个位置会更好。
例子:
RewriteRule ^$ app/webroot/ [L]
RewriteCond ${REQUEST_URI} !^phd_application/
RewriteRule (.*) app/webroot/$1 [L]