Итак, у меня есть сервер Ubuntu, на котором запущен Apache 2, и я хочу перенаправить весь трафик на https. Ниже приведен файл конфигурации, доступный для сайтов (с замененным доменным именем.
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent "/" "https://example.com/"
</VirtualHost>
<VirtualHost *:443>
ServerAdmin example@emailcomp.com
DocumentRoot /var/www/personal/html/
ServerName https://example.com
ServerAlias https://www.example.com
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
</IfModule>
<Directory /var/www/personal/html/>
Options +FollowSymlinks
AllowOverride All
Require all granted
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/personal/html
SetEnv HTTP_HOME /var/www/personal/html
</Directory>
ErrorLog ${APACHE_LOG_DIR}/personal-error.log
CustomLog ${APACHE_LOG_DIR}/personal-access.log combined
ServerAlias example.com
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
https://example.com определенно работает и зашифрован. Как можно переписать конфиг для перенаправления всего трафика на https?
На ваш вопрос уже есть ответ: ЭТО делает то, что вы пытаетесь достичь:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent "/" "https://example.com/"
</VirtualHost>
Тем не мение, ServerName
https://example.com
неправильно: вы не должны включать протокол здесь или в свой ServerAlias
. Это <VirtualHost *:443>
который делает его виртуальным хостом HTTPS. Если у тебя когда-нибудь есть https://example.com
для работы с этой конфигурацией, вероятно, потому что у вас также есть ServerAlias example.com
позже в конфигурации, но вы не должны указывать эти директивы дважды в одном и том же <VirtualHost>
блок тоже.
Это заставляет меня задуматься, если это sites-available
config всегда является пользователем, т.е.
a2ensite
или вручную создав символическую ссылку в sites-enabled
)?(Кстати. Как http://www.example.com
перенаправляет на канонический https://example.com/
, было бы неплохо перенаправить https://www.example.com/
в то же место тоже.)