为什么我的最后一个规则[L]不阿帕奇工作?(Why is my LAST rule [L] not

2019-09-30 06:28发布

背景,我运行Zend框架应用程序。 要挤的最大性能的它成为可能。 所以我想通过Zend框架书的作者移动的规则出来的.htaccess的正是每本博客文章信: http://www.armando.ws/2009/03/how-to-run- Zend的框架与-无htaccess的文件/

所以基本上,在httpd.conf中,我加入了包括增加到conf /额外/的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]

修复了静态文件,当然,打破它的其余部分。

所以基本上最后的规则不工作似乎。

在得到这个任何想法才能正常工作?

谢谢。

UPDATE

打开登录后(我不得不加息它为LogLevel 9),事实证明,即使删除重写规则^ * $的index.php [NC,L]允许静态文件来解决,这不是条件匹配的RewriteCond %{} REQUEST_FILENAME -s不管是什么...它只是没有“通过”反正这使得该文件显示...

那么清楚,但事实上,是的.htaccess正确的路径上进行它的工作,其中的httpd-zf.conf有错误的路径....必须有一个点的地方,我可以告诉大家的httpd-zf.conf什么我的文档根目录路径是...

Answer 1:

我不相信的条件与第二规则相关联。 我建议打开改写调试: RewriteLog "/myfolder/mylogfile.log"RewriteLogLevel 3

尝试:

RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /index.php [NC,L]


Answer 2:

找到了解决办法!

下面是工作的代码:

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -s [OR]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -l [OR]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -d

本维基文章解释为什么它不工作: http://wiki.apache.org/httpd/RewriteContext



文章来源: Why is my LAST rule [L] not working in apache?