ПРИМЕЧАНИЕ. Я не системный администратор, поэтому мои знания и возможности редактировать файлы конфигурации системы несколько ограничены.
Сервер, который недавно перешел на полностью Https, не отображал нашу страницу 404, как это было до переключения.
Not Found
The requested URL /toh was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
На нашей странице httpd.conf у нас была строка
ErrorDocument 404 /admin/404/
Когда мы изменили эту строку на
ErrorDocument 404 https://example.com/admin/404/
вроде все нормально работает; ошибка «Не найдено» исчезла, и страница 404 отображалась правильно.
Тем не мение,
Эта страница 404 определяет, откуда пользователь изначально приходил, используя
$_SERVER['REQUEST_URI'];
Затем страница проверит базу данных, увидит, есть ли там этот URI, и затем перенаправит клиента на соответствующую страницу.
Так, например, если пользователь зашел на страницу из:
http://example.com/tacos
Если это недействительная ссылка, страница 404 увидит ссылку / tacos, найдет ее в базе данных и перенаправит пользователя туда, куда ему нужно перейти.
Теперь $ _SERVER ['REQUEST_URI'] только выплевывает
/admin/404
независимо от того, откуда пришел пользователь.
@Mohammed правила были установлены в файле .conf, а не в файле .htaccess. Но оказалось, что проблема (насколько я могу судить) заключалась в том, что RewriteEngine был выключен. Пожалуйста, посмотрите мой ответ, если хотите. Спасибо.
как насчет example.com/tacos, если ссылка недействительна, но с https обрабатывает ли веб-сервер ее так, как вы ожидали?
@Mohammed: да, с включенными правилами перезаписи и удалением доменного имени из ErrorDocument, все работает так, как ожидалось, исходя из того, что я могу сказать






Таким образом, очевидно, что проблема была двоякой:
1) Для этого потока здесь ссылка ErrorDocument не должна иметь доменного имени; он должен быть в формате
ErrorDocument 404 /admin/404
2) В файле .conf не было включено RewriteEngine; это было закомментировано. Итак, мы раскомментировали следующие правила
<VirtualHost 127.0.0.1:80>
...
# RewriteEngine on
# RewriteCond %{HTTP_HOST} ^example\.com [NC]
# RewriteCond %{REQUEST_URI} /$ [NC]
# RewriteRule ^(.*)/$ https://www.example.com/$1 [L,R=301]
...
RedirectMatch permanent ^(.*)/$ https://www.example.com/$1
</VirtualHost>
Теперь страница 404 найдена и $ _SERVER (['REQUEST_URI']) имеет соответствующий ресурс.
попробуйте поместить правила, которые заставляют веб-сайт использовать https в верхней части файла .htaccess, затем очистите кеш браузера и протестируйте его