Назад | Перейти на главную страницу

Как избежать перенаправления URL-адресов при использовании SSLRequireSSL + ErrorDocument

Хорошо, у меня есть хост 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.

Итак, я полагаю, что должен сделать одно из следующего:

Вчера я не мог сделать ни то, ни другое. Возможно, ни один из этих вариантов не жизнеспособен, но я застрял в том, что делать.

Как я могу проинструктировать .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. Но это единственное, над чем мне довелось работать.

Если вы найдете лучшее решение, разместите здесь свою работу.