Вероятно, это дубликат, но я не могу найти то, что ищу. Я хочу перенаправить http и / или non-www на https + www. Это часто называют каноническим примером того, когда следует избегать mod_rewrite
.
Моя текущая установка работает, используя только mod_alias
' Redirect
, но требует дополнительного VirtualHost
с идентичной конфигурацией SSL для одного случая.
Есть ли способ упростить это, используя Redirect
только? Или это потребует mod_rewrite
? Спасибо!
# Redirect http with or without www
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect / https://www.example.com/
</VirtualHost>
# Redirect https without www
<VirtualHost *:443>
ServerName example.com
Redirect / https://www.example.com/
SSLCertificateFile /etc/ssl/example/cert.pem
SSLCertificateKeyFile /etc/ssl/example/key.pem
</VirtualHost>
# Final destination
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /var/www/example
SSLCertificateFile /etc/ssl/example/cert.pem
SSLCertificateKeyFile /etc/ssl/example/key.pem
...
</VirtualHost>
Для потомков я обнаружил mod_macro
. Это избавляет меня от большого количества дублирования, позволяя мне писать Macro
шаблон для блоков выше и сокращение моего фактического VirtualHost
файлы в один Use
строка с переменными. Поищите примеры в Документы Apache.