Eu implanto um site do Drupal usando git (bem, OK, os desenvolvedores o implantam; tento mantê-los fora de problemas) e, por essa razão, o site tem um diretório .git
e um arquivo .gitignore
em a raiz do documento.
Atualmente, as permissões nos arquivos são suficientes para fazer com que o nginx retorne um erro 403 Proibido se esses arquivos forem acessados no navegador da Web.
No entanto, eu gostaria que o nginx negasse completamente a existência deste arquivo e diretório, e retornasse 404 se alguém tentar acessá-los no navegador.
Mas espere, tem mais!
O que eu realmente quero que aconteça é que o navegador receba a página de erro 404 gerada pelo Drupal. Na página admin/settings/error-reporting
do Drupal, vejo que erros 404 estão sendo enviados para o link 404error
, um nó do Drupal com um dos links da Internet. páginas 404 mais interessantes.
Minha configuração nginx já contém um bloco @drupal
que passa uma solicitação para o Drupal. Então, eu quero passar o pedido para o Drupal, mas eu não quero que o Drupal tente servir o arquivo estático existente, mas simplesmente para servir a página 404.
location @drupal {
rewrite ^/(.+)$ /index.php?q=$1 last;
}
Infelizmente, o Google não foi muito útil aqui; a maioria das pessoas parece ter o problema oposto. Como posso fazer com que solicitações para qualquer coisa no diretório .git
ou no arquivo .gitignore
sejam enviadas para a página 404 do Drupal?