1

次のようにhtaccessですべてを宣言する代わりに、Mod Rewriteを使用してすべての可能なhttpステータスエラーコード(4XXおよび5XXコード)を処理する方法があるかどうか疑問に思いました。

# 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"

手伝ってくれませんか。どうもありがとう!

4

1 に答える 1

0

近い将来、対応する正しいドキュメントを指す 10 個程度のエラー コードのリストを作成するだけでは不十分な、HTTP ステータス コードの新しい波が Web にヒットすることを期待していますか? HTTPステータスコードのリストを調べて、サーバーが実際にどのステータスコードを選択するかを選択する必要がありますそれらのエラードキュメントを使用および設定します。通常の Web サーバーでは、おそらく 404 と 500 しか表示されず、アクセス許可が正しく構成されていない場合は 403 が表示される可能性があり、共有 Web サービスを使用している場合は 509 が表示される可能性があります (ただし、1 つがによって処理されると思いますとにかくホスティングプロバイダー)。さまざまなことを実行できる非常に高度な Web サーバーを構築していない場合は、Web サーバーが決して使用しないエラー コードをすべて探すために微視的な時間を浪費しているだけです。

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

于 2011-12-07T18:48:59.377 に答える