2011-12-07 9 views
1

代わりに、このようなhtaccessファイルでそれらのすべてを宣言するあらゆる可能なHTTPステータスエラーコード(4XXと5XXのもの)を処理するためのModリライトを使用する方法がある場合、私は思っていた:のErrorDocument&モッズ書き換え

# serve custom error pages 
ErrorDocument 400 error.php?code=400 
[...] 
ErrorDocument 510 error.php?code=510 

どこか私の周りこの小さなトリックが見つかりました:

# provide a universal error document 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ error.php [L] 

をしかし、それだけで404ものを処理していませんか? 問題が解決しない場合は、この機能を処理するようにキャッシュ破棄書き換えルールを変更するにはどうすればよいですか?

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)\.\d+\.(css|js)$ $1.$2 [L] 

私のようなものが必要になります

IF %{REQUEST_URI} MATCHES "^(.+)\.\d+\.(css|js)$" 
    REWRITE TO "$1.$2" 
ELSE 
    REWRITE TO "error.php" 

はあなたが私助けてくださいことはできますか? 多くの感謝!

答えて

0

近い将来、HTTPステータスコードの新しい波がウェブに当たると予想されますが、正しい対応するドキュメントを指すエラーコードのリストを10個作成するだけでは不十分です。あなたは実際にList of HTTP status codesを通過して、サーバーがとなるものを選んで実際にを使用して、それらのエラー文書を設定する必要があります。普通のWebサーバーでは、おそらく404と500、おそらく403のアクセス権が正しく構成されていない場合は403、おそらく共有Webサービスを使用している場合は509が表示されます(ただし、とにかくホスティングプロバイダ)。全く別のことをすることができる非常に高度なWebサーバーを構築していない場合は、Webサーバーの微視的な時間を無駄にして、決して使用しないすべてのエラーコードを探しているだけです。

真剣に、すべてのステータスコードを400から510までリストしないでください。真剣に。それらの多くはあなたがを手動での何かが間違っていると判断したときに実行スクリプトから送信するステータスコードになります。

+0

書き換えルールとエラー文書の間に矛盾がありますか? –

+0

いいえ、RewriteRulesによって決定された最終パスが存在しないか、理由が何であれ、ファイルへのアクセス権を持っていない場合、ErrorDocumentが使用されます。 – animuson

関連する問題