Хорошо, у меня есть хост Apache, над которым я работаю (общий хост), у которого он есть в корне .htaccess
файл.:
Options -Indexes
SSLOptions +StrictRequire
ErrorDocument 401 "<!DOCTYPE html><html lang='en'> ... "
ErrorDocument 403 "<!DOCTYPE html><html lang='en'> ... "
SSLRequireSSL
Поэтому, когда пользователь пытается подключиться без SSL, ему предлагается настраиваемый 403
html, указанный в файле. Это происходит при сохранении их старого URL-адреса в адресной строке, чтобы они могли просто добавить https
быстро.
Однако для улучшения страницы ошибок желательно загрузить php
файл из ./error
и используйте этот файл в определении для ErrorDocument
. Теперь это круто, если просто указать документ напрямую ...
ErrorDocument 403 /error/script.php
Они получат другой 403
или Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
поскольку соединение с файлом не по протоколу SSL. В попытке исправить это можно попробовать следующее ...
ErrorDocument 403 https://site.tld/error/script.php
Но это перенаправляет клиента на https://site.tld/error/script.php
что НЕЖЕЛАТЕЛЬНО, потому что они должны повторно ввести URL-адрес и, следовательно, не могут просто изменить http
к https
.
Итак, я полагаю, что должен сделать одно из следующего:
./error
из требования SSL с некоторыми .htaccess
обработка ИЛИВчера я не мог сделать ни то, ни другое. Возможно, ни один из этих вариантов не жизнеспособен, но я застрял в том, что делать.
Как я могу проинструктировать .htaccess
позволять http
связи в ./error
, или какое-то другое исправление, поэтому я все еще получаю свои страницы с ошибками, но клиент по-прежнему сохраняет исходный URL-адрес?
Хорошо, вот мое исправление.
У меня структура папок следующая:
/ (web root)
|
|- .htaccess
|- index.php
|
|- error
|- dir1
|- dir2
~
|- dir(n - 1)
`- dir(n)
В (корневой каталог) .htaccess у меня есть следующее:
Options -Indexes
ErrorDocument 403 /error/script.php
И в папке ЛЮБОГО подкаталога (ИСКЛЮЧАЯ / error /):
SSLOptions +StrictRequire
SSLRequireSSL
Это позволяет мне загружать страницы ошибок без SSL, но при этом применять его для всех остальных папок. Это красиво? Нет, я хотел бы иметь возможность управлять этим из корневого файла .htaccess. Но это единственное, над чем мне довелось работать.
Если вы найдете лучшее решение, разместите здесь свою работу.