.htaccess и собственный ErrorDocument для разных типов файлов.
-
22-09-2019 - |
Вопрос
Мне интересно, можно ли использовать перезапись мода вместе с замедлением ErrorDocument для настройки страниц ошибок в зависимости от того, какой тип файла запрашивается.
Например, запрашивается несуществующий файл html или php. Apache предоставит красивую пользовательскую HTML-страницу.
Но если несуществующее изображение, js, css и т. д.запрашивается файл, то Apache предоставит базовый html-файл только со ссылкой на него.
Хорошим примером такого поведения является Facebook.Попробуйте запросить поддельный файл JavaScript, вы получите другую страницу, чем если бы вы запросили несуществующий файл php.
Решение
В итоге я использовал комбинацию ErrorDocument и RewriteRules, это работает, потому что страница php выдает мне ошибку 404 Not Found.
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
Другие советы
Использовать RewriteCond !-f
вместе с перезаписью на желаемую страницу вывода и флагом R=404
.
Вы можете использовать PHP-скрипт для своей страницы 404:
ErrorDocument 404 /error404.php
Там вы можете проанализировать путь URL-адреса с помощью PHP (см. $_SERVER['REQUEST_URI']
) и определить, какой тип ресурса был запрошен или ожидается.