.htaccess e errordencento personalizado para diferentes tipos de arquivos
-
22-09-2019 - |
Pergunta
Gostaria de saber se é possível usar o Mod Rewrite junto com a desaceleração do ErroDocument para personalizar as páginas de erro, dependendo do tipo de arquivo solicitado.
Por exemplo, um arquivo HTML ou PHP inexistente é solicitado que o Apache fornecerá uma boa página HTML personalizada.
Mas se uma imagem inexistente, JS, CSS, etc ... O arquivo for solicitado, o Apache servirá um arquivo HTML básico com apenas um link nele.
Um bom exemplo desse comportamento é o Facebook. Tente solicitar um arquivo JavaScript falso, você receberá uma página diferente e, se solicitar um arquivo PHP inexistente.
Solução
Acabou usando uma combinação de ErrorDocument e reescritores, isso funciona porque a página do PHP lança um 404 não encontrado para mim.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*(?<!.js|.css|.ico|.txt|.bmp|.gif|.png|.jpeg|.jpg)$ /error/404.php [L]
ErrorDocument 404 /404_basic.html
Outras dicas
Usar RewriteCond !-f
junto com uma reescrita na página de saída desejada e uma bandeira de R=404
.
Você pode usar um script PHP para sua página 404:
ErrorDocument 404 /error404.php
Lá você pode analisar o caminho da URL com o PHP (ver $_SERVER['REQUEST_URI']
) e determine que tipo de recurso foi solicitado ou é esperado.