Я развертываю веб-сайт Drupal с помощью git (ну ладно, разработчики развертывают его; я стараюсь уберечь их от проблем), и по этой причине на сайте есть каталог .git
и файл .gitignore
в корне документа.
В настоящее время разрешений для файлов достаточно, чтобы nginx возвращал ошибку 403 Forbidden, если доступ к этим файлам осуществляется в веб-браузере.
Однако я бы хотел, чтобы nginx полностью отрицал существование этого файла и каталога и возвращал 404, если кто-то пытается получить к ним доступ в браузере.
Но подождите, это еще не все!
Что я действительно хотите, чтобы браузер получил страницу с ошибкой 404, созданную Drupal. В Drupal admin/settings/error-reporting
страницу, я вижу, что 404 ошибки отправляются на http://www.example.com/404error
, узел Drupal с одной из наиболее интересных страниц 404 в Интернете.
Моя конфигурация nginx уже содержит @drupal
блок, который передает запрос в Drupal. Итак, я хочу передать запрос в Drupal, но я не хочу, чтобы Drupal также пытался обслуживать существующий статический файл, а просто обслуживал страницу 404.
location @drupal {
rewrite ^/(.+)$ /index.php?q=$1 last;
}
К сожалению, Google здесь не слишком помог; у большинства людей, кажется, противоположная проблема. Как мне вызвать запросы на что-либо в .git
справочник или .gitignore
файл для отправки на страницу 404 Drupal?
Попробуйте создать блок местоположения для .git
каталог и установите его как внутренний. Это должно вызвать 404 ответа на любые запросы. Если они не передаются в Drupal, вам может потребоваться определить error_page сделать так.
location /.git {
internal;
}
error_page 404 /notfound;
Другой вариант - просто переписать эти запросы на что-то несуществующее:
rewrite ^/.git /notfound;