0

少しイライラしているので、助けていただければ幸いです。.htaccess の FilesMatch ブロックと組み合わせて、404/directory not found をキャッチすることは可能ですか?

存在しない .json ファイルを 204 No Content に書き換えるために、次の .htacces を作成しました (使用時のエラーを防ぎます$.getJSON)。

<FilesMatch "\.(json)$">

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d [OR]
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^ - [R=204]

</FilesMatch>

次のファイル/ディレクトリ構造でいくつかのことをテストしました。

httpdocs
 - a
  - a.json
 - b

.htaccess は、存在しない構成ファイル ( b/b.json) を要求すると機能しますが、存在しないディレクトリ ( ) の構成ファイルを読み込もうとするc/c.jsonと、目的の 204 ではなく 404 statusCode が返されます。

リクエストa/a.jsonすると httpStatusCode 200 が返されます (Found、これは正しい)

要求するb/b.jsonと、httpStatusCode 204 が返されます (コンテンツなし、これも正しい、.htaccess によって処理されます)

リクエストc/c.jsonすると httpStatusCode 404 (Not Found) が返される

リクエスト c も 204 No Content を返すようにします。の代わりに -d<FilesMatch .*\/(.*)\.(json)$>を使用してリクエストからディレクトリをキャッチするなどのことを試みましたが、これは機能しません。$1%{REQUEST_FILENAME}

また、.json ファイルに対してのみ、ErrorDocument を使用して 404 エラーをキャッチしようとしましたが、うまくいきません。リダイレクトは機能せず、404 statusCode が返されます。

<FilesMatch "\.(json)$">

    ErrorDocument 404 /204.php

</FilesMatch>

私は何を間違っていますか?これをキャッチする方法はありますか?

4

1 に答える 1