Мое правило htaccess 404 установлено следующим образом:
ErrorDocument 404 /404.htm
, но это то, что происходит:
Несуществующий URL без расширения: https://www.example.com/bgbgbgbgbg перенаправляет на https://www.example.com/404.htm ( правильное поведение )
несуществующий URL с точкой: https://www.example.com/bgbgbgbgbg. перенаправляет на https://www.example.com/404.htm ( правильное поведение )
несуществующий URL с расширением: https://www.example.com/bgbgbgbgbg.htm перенаправляет на «файл не найден» ( следует перенаправить на https://www.example.com/404.htm)
url endngс косой чертой: https://www.example.com/bgbgbgbgbg/ перенаправляет на странную страницу 404 без CSS, и URL-адреса в адресной строке браузера не изменяются ( следует перенаправить на https://www.example.com/404.htm)
Я провел некоторое исследование и попытался реализовать эти строки прямо под ErrorDocument 404 /404.htm:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . https://www.example.com/404.htm [L]
, он решает все, НО перенаправляет домашнюю страницу (https://www.example.com) на https://www.example.com/404.htm
Что я могу сделать, чтобы решить проблему с домашней страницей?
Чтобы перенаправить несуществующие запросы на страницу ошибки 404, вы можете просто использовать:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.+$ /404.htm [L,R]