2011-07-24 29 views
3

私はZend Frameworkを使ってウェブサイトを開発しました。エラーを処理するために、次の行をhtaccessファイルに追加して、エラーが発生するたびに対応するユーザーにリダイレクトすることができます。Zend Framework with htaccess

ErrorDocument 500 /errors/500.html 
ErrorDocument 404 /errors/404.html 
ErrorDocument 403 /errors/403.html 

ので/publicフォルダに今の私のhtaccessファイルは次のようになります。動作していないようで、それはこれらのページのいずれかに私をリダイレクトしていないと、代わりにこれを表示するしかし

RewriteEngine on 
# Rewrite rules for Zend Framework 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php 

# Security: Don't allow browsing of directories 
Options -Indexes 
# PHP settings 
php_flag magic_quotes_gpc off 
php_flag register_globals off 
php_flag short_open_tag on 

ErrorDocument 500 /errors/500.html 
ErrorDocument 404 /errors/404.html 
ErrorDocument 403 /errors/403.html 

古典的なエラーページ。 http://www.mysite.com/wesgtsgsfd/sgsdfを取得中

Serverエラー

ウェブサイトでエラーが発生しました。メンテナンスのためにダウンしている可能性があります。 または正しく構成されていません。

ここにいくつかの提案があります: ページを再読み込みしてください。 HTTPエラー500(内部サーバーエラー):サーバーが要求を で実行しようとしていたときに予期しない 状態が発生しました。

誰でも私のhtaccessファイルを修正して、Apacheが適切にエラーを処理し、エラータイプに応じてエラーページにリダイレクトできるように考えていますか?

+2

ようこそ。 ;-)質問の提出と書式設定に関する短いコメント。あなたの質問を入力すると(!)、提出すると実際にあなたの質問がどのように表示されるかのプレビューを見ることができます。 [Markdown formatting help](http://stackoverflow.com/editing-help)を見ておくと便利です。再び、歓迎! –

+2

通常、すべてのリクエストは、一連の標準の.htaccessルールを使用してZFアプリにルーティングされます。その後、404、500などのエラーはErrorControllerによって処理されます。 Apache(ZFではなく)レベルで明示的に処理したいと言っていますか? –

+0

私はErrorControllerがエラーを処理するオプションであることを知っています。しかし、私は本当にエラーコントロールを使用する方法を知っていません(エラーを傍受して、エラーコントロールをZendにリダイレクトする方法) 私はhtaccessがより簡単なオプションになるかもしれないと思っています –

答えて

3

あなたが解決しようとしている問題は、すでにZFのエラーコントローラで解決されています。

Error_ControllerError_Controller::errorAction()ソースと対応するビュースクリプトを参照してください。単純な条件を使用したり、レイアウトを切り替えたりして、別のビュースクリプトを簡単に追加することもできます。

$this->getHelper('layout')->setLayout('custom404'); 
+0

私は問題を修正しました。私は、ErrorControllerを働かせることができました、あなたの助けに感謝 –

1

AFAIK Apacheは、ZFアプリケーションによってスローされたエラーを処理できません。これは、すべてのリクエストがindex.phpに送られるためです。 ZFのエラーページをカスタマイズするのは難しくありません。さらに、標準レイアウトを簡単に保つことができます。 quick readはエラーの処理方法とエラーページのカスタマイズを簡単に説明します。