Acho que é isso que você quer: Emulando ErrorDocuments com Mod_Rewrite
Eu tenho um site Drupal
que contém as regras mod_rewrite
padrão abaixo
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteCond %{REQUEST_URI} !=/server-status
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Isso significa que as solicitações que correspondem a um arquivo ou diretório existente serão veiculadas diretamente, em vez de acionar o script index.php
.
O problema é que as solicitações para arquivos não existentes não correspondem às regras acima e são redirecionadas para index.php
, que inicializam o aplicativo Drupal
inteiro e carregam desnecessariamente o site.
Para ignorar Drupal
dos arquivos ausentes, criei as seguintes regras:
RewriteCond %{REQUEST_URI} (.jpg|.jpeg|.css|.js|.png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* - [L,R=404]
Isso funciona, mas o problema é que os redirecionamentos 404
dependem de ErrorDocument 404 /index.php
, o que acaba fazendo o bootstrapping Drupal
.
Eu preciso manter ErrorDocument 404 /index.php
porque Drupal
é usado para exibir páginas 404
úteis para conteúdo dinâmico. Eu tentei definir vários ErrorDocument 404
(1 antes das minhas regras e 1 antes das regras do Drupal), mas apenas a última se aplica.
P: Como posso exibir uma página 404
vazia para solicitações de arquivos não existentes sem alterar a diretiva ErrorDocument 404
?
Acho que é isso que você quer: Emulando ErrorDocuments com Mod_Rewrite
Use um código de status HTTP diferente?
Diga, 403 (Proibido) - o que importa o que o cliente (malicioso) vê?