【发布时间】:2012-08-26 12:05:05
【问题描述】:
多年来我一直在使用 Zend 框架,但已经意识到我们现在正在修复的错误处理的一些关键问题。 (我在这里发布了一个不同的问题:Why my site is always using the ErrorController for all types of errors irrespective of HTTP Status code? 解释那里的故事)。
我的问题是一个简短的问题。 Zend Framework 的普通 .htaccess 文件长什么样子?
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
但是,以上内容对我来说是新的 - 有人可以解释它的确切作用吗? 我当前的 .htaccess 文件有很多 301 重定向代码,但为了这篇文章的目的,我只会在此处粘贴相关信息:
ErrorDocument 404 http://www.mydomain.com/pagenotfound/
ErrorDocument 503 http://www.mydomain.com/service-unavailable/
RewriteCond %{REQUEST_URI} !^/liveagent
RewriteCond %{REQUEST_URI} !^/blog
RewriteRule !\.(js|ico|gif|GIF|jpg|JPG|jpeg|png|PNG|pdf|css|html|xml|swf|php|mp3|mp4|webm|ogv|f4v|flv|txt|wsdl|css3|ttf|eot|svg|woff)$ index.php
以上对我们来说工作正常,基本上不允许“liveagent”和“blog”(Wordpress)目录与 Zend 一起运行,但我意识到我现在需要进行以下更改:
ErrorDocument 404 必须从代码中删除,因为 Zend 框架应该处理所有错误。但是,当我删除它时,转到像 www.mydomain.com/this-does-not-exist.php 这样的 URL 会导致 404 错误标准 Apache 页面 - 它不会加载 ZF 或 ErrorController。这是因为上述 RewriteRule 中的“php”排除。我不想简单地删除它,因为我们有时希望能够访问根目录上的 php 文件,例如我们用于将站点置于维护模式的单独的“holding.php”文件。
标准做法是什么?我应该删除 php 扩展名吗?但是,这不会解决其他 404 之类的问题 www.mydomain.com/this-does-not-exist.css 这也是上述 RewriteRule 中的一个排除项(即 CSS)。
因此,我是否应该将上面的内容完全更改为我上面提到的 Zend 的 .htaccess 新代码?
如果是这样,我是 htaccess 的初学者 - 我如何修改 .htaccess 代码以允许 CSS、JS、视频文件等以及博客和 liveagent 目录从 Zend 框架中排除?
【问题讨论】:
-
您愿意寻求解决方案吗?你愿意讨论吗?你甚至知道有“cmets”部分吗?通过努力和耐心,我在您提供的链接中写下了您问题的答案,您是否对此有所了解?您是否对我的回答发表了评论并正确地提出了问题?你甚至知道你真正在寻找什么吗?
-
首先非常感谢您对另一个帖子的彻底回复,我的意思是一旦我实际尝试过就给您回复,对于任何冒犯我深表歉意,因为我需要与另一位同事一起完成它.另一方面,我认为,我的 .htaccess 文件没有在另一篇文章中解决 - 事实上,它导致了一个紧急问题(如上所述),我现在意识到这是一个与我之前的帖子不同的问题,我在回到 ErrorController 之前需要重点关注。因此出现了一个新问题,询问标准 htaccess 是什么样的。希望您能理解,再次感谢。
-
当然,我明白了...慢慢来:)
标签: apache .htaccess zend-framework