Я перенаправляю все http:// запросы на https://, используя файл .conf хоста apache2, как показано ниже.
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect / https://www.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
#more details here
</VirtualHost>
Это работает нормально и перенаправляет все запросы на https://
Теперь я хочу перенаправить мой запрос без www на www(такhttps://example.comкhttps://www.example.com). Я пытался добавить эти строки до и после блока 443 выше. Но безуспешно :(
<VirtualHost *:443>
ServerName example.com
Redirect / https://www.example.com/
</VirtualHost>
Есть идеи, как это можно включить без .htaccess?
Пожалуйста помоги..
решение1
Вы хотите добавить перенаправление к существующему *:443
vhost. Что-то вроде этого должно это сделать:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Поместите это перед любыми другими RewriteRule
разделами.
решение2
То, что у вас есть, уже правильно.
И вам нужно определиться *:443
с NameVirtualHost
.
Используйте эту конфигурацию, в которой # more details here
указаны все ваши настройки SSL, поскольку у вас уже есть:
NameVirtualHost *:443
<VirtualHost *:443>
ServerName www.example.com
# more details here
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
Redirect / https://www.example.com/
# more details here
</VirtualHost>
Вам понадобятся данные вашего SSL-сертификатакаждый VirtualHost
контейнер, даже если они одинаковые.
Пожалуйстанеиспользовать дополнительные адреса IPv4 — этот вариант использования не требует использования дополнительных IP-адресов. HTTP/1.1 может обрабатывать несколько доменов на одном IP-адресе, в том числе с SSL.