Servir página 404 vazia com mod_rewrite

1

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 ?

    
por Max 20.03.2012 / 10:09

2 respostas

2

Acho que é isso que você quer: Emulando ErrorDocuments com Mod_Rewrite

    
por 20.03.2012 / 13:19
0

Use um código de status HTTP diferente?

Diga, 403 (Proibido) - o que importa o que o cliente (malicioso) vê?

    
por 20.03.2012 / 12:35