.htaccess условие перезаписи для соответствия файлов, если каталог не существует - PullRequest
0 голосов
/ 07 августа 2020

Я немного расстроен, так что любая помощь будет принята с благодарностью. Можно ли поймать каталог 404 / not found в сочетании с блоком FilesMatch в .htaccess?

Я создал следующие .htacces, чтобы переписать несуществующие. json -файлы в 204 No Контент (предотвращение ошибок при использовании $.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.

Запрос a/a.json дает httpStatusCode 200 (Найдено, что верно)

Запрос b/b.json дает httpStatusCode 204 (Нет содержимого, также правильно, обрабатывается с помощью .htaccess)

Запрос c/c.json дает httpStatusCode 404 (Not Found)

Я хочу, чтобы запрос c также возвращал 204 No Content. Я пробовал что-то вроде захвата каталога из запроса с использованием <FilesMatch .*\/(.*)\.(json)$> и использования $1 для -d вместо %{REQUEST_FILENAME}, но это не работает.

Я также пробовал чтобы отловить ошибку 404 с помощью ErrorDocument только для файлов. json, но это не работает. Перенаправление не сработает, и будет возвращен код статуса 404.

<FilesMatch "\.(json)$">

    ErrorDocument 404 /204.php

</FilesMatch>

Что я делаю не так? Есть идеи, как это поймать?

1 Ответ

1 голос
/ 07 августа 2020

Здесь нет необходимости использовать FilesMatch, вы можете просто ограничить, к каким URL-адресам это относится, непосредственно в самом RweriteRule.

RewriteRule \.json$ - [R=204]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...