【发布时间】:2009-11-24 03:46:18
【问题描述】:
背景,我正在运行 Zend Framework 应用程序。试图从中挤出最大的性能。因此,我试图将规则从 .htaccess 中移出,完全符合 Zend Framework 书籍作者的这篇博文中的字母:http://www.armando.ws/2009/03/how-to-run-zend-framework-with-no-htaccess-file/
所以基本上,在 httpd.conf 中,我正在向 conf/extra/httpd-zf.conf 添加一个包含,其中包含与我的 .htaccess 文件中相同的内容并且可以正常工作。
这是在 httpd-zf.conf 中无法正常运行的相关代码:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [L,NC]
RewriteRule ^.*$ /index.php [NC,L]
控制器工作正常。可以看到 index.php。但是静态文件不起作用。它错误地说它不是一个有效的控制器,所以很明显它是通过 index.php 运行的。
跑完之后就差不多了:
RewriteRule ^.*$ - [L,NC]
它一直在继续。事实上,删除这一行:
RewriteRule ^.*$ /index.php [NC,L]
修复静态文件,但当然会破坏其余部分。
所以基本上最后一条规则似乎不起作用。
关于让它正常工作的任何想法?
谢谢。
更新
打开日志记录后(我不得不将其提升到 Loglevel 9),结果发现即使删除 RewriteRule ^.*$ /index.php [NC,L] 允许静态文件解析,它不匹配条件 RewriteCond %{REQUEST_FILENAME} -s 无论如何......它只是“通过”无论如何允许文件显示......
很明显,.htaccess 在正确的路径上的事实使它在 httpd-zf.conf 的路径错误的地方也能正常工作....一定有一个地方可以告诉 httpd-zf.conf 什么我的 docroot 路径是...
【问题讨论】:
标签: apache zend-framework mod-rewrite