私はZendFrameworkを何年も使用していますが、現在修正中のエラー処理に関するいくつかの重大な問題に気づきました。(私はここに別の質問を投稿しました:なぜ私のサイトはHTTPステータスコードに関係なくすべてのタイプのエラーに常にErrorControllerを使用しているのですか?そこでの話を説明しています)。
ここでの私の質問は簡単なものです。Zend Frameworkの一般的な.htaccessファイルはどのように見えますか?
最新のZFドキュメントによると、
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で実行することはできませんが、次の変更を行う必要があることに気付きました。
Zend Frameworkはすべてのエラーを処理する必要があるため、ErrorDocument404はコードから確実に削除する必要があります。ただし、これを削除すると、www.mydomain.com / this-does-not-exist.phpのようなURLにアクセスすると、404エラーの標準Apacheページが表示されます。ZFまたはErrorControllerは読み込まれません。これは、上記のRewriteRuleでの「php」の除外が原因です。サイトをメンテナンスモードにするために使用する別の「holding.php」ファイルなど、ルート上のphpファイルにアクセスできるようにしたい場合があるため、これを単に削除したくはありません。
標準的な方法は何ですか?php拡張子を削除する必要がありますか?ただし、これはwww.mydomain.com/this-does-not-exist.cssのような他の404を解決しません。これは、上記のRewriteRuleの除外(つまりCSS)でもあります。
したがって、上記のように、上記をZendの.htaccessの新しいコードに完全に変更する必要がありますか?
もしそうなら、私はhtaccessの一種の初心者です-CSS、JS、ビデオファイルなどとブログとliveagentディレクトリをZend Frameworkから除外できるように、その.htaccessコードを変更するにはどうすればよいですか?