Я уже прочитал много вопросов по базовому перенаправлению http -> https, но все они говорят о перенаправлении / перезаписи, включая только доменное имя.
<VirtualHost *:80>
ServerName www.example.com
Redirect / https://www.example.com/
Например, этот фрагмент выше будет перенаправлять все запросы с http: www.example.com на https: www.example.com. Это, конечно, рекомендуемый способ apache .
Но как бы нам перенаправить http на https, даже если запрос основан на IP? Например, http: ip в https: ip. Как этого добиться? Я знаю, что https предназначен для доменного имени, но у меня есть это конкретное требование, чтобы клиент мог получить доступ по IP.
Запросы по ip-адресу (или HTTP 1. 0 запросов без заголовка Host:
, а также запросы для неизвестных доменов обрабатываются виртуальным хостом по умолчанию VirtualHost
, который по умолчанию имеет значение first VirtualHost
, если не задан явно с помощью:
<VirtualHost _default_:*>
Redirect / https://www.example.com/
...
</VirtualHost>
Таким образом, в зависимости от текущей конфигурации:
_default_:80
VirtualHostЕсли у вас только один IP-адрес, вы можете использовать нечто подобное (НЕ ПРОВЕРКИРОВАННОЕ):
<VirtualHost *:80>
ServerName www.example.com
ServerAlias *
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [L,R]
Просто напишите в конце файла http.conf
.
##this is for http redirection to domain name###
<VirtualHost *:80>
ServerName www.example.com
ServerAlias *
Redirect / https://www.example.com/
</VirtualHost>
##This is for https redirection to domain name###
<VirtualHost *:443>
ServerName www.example.com
ServerAlias *
Redirect / https://www.example.com/
</VirtualHost>