Принудительно использовать префикс www с помощью Настройка SSL VirtualHost

Запуск Apache / 2.4.7.

Кажется, у меня возникли проблемы с принудительным использованием префикса www для одного из моих доменов SSL.

следующие шаблоны должны перенаправлять на: https://www.foo.com

  • foo.com
  • www.foo.com
  • http://foo.com
  • http: // www .foo.com
  • https://foo.com

Стоит упомянуть, я также хочу сохранить любой URI, который мог быть запрошен, например. foo.com/bar => https://www.foo.com/bar

Итак, вот актуальный текущий код в моем foo.com.conf файл.

<VirtualHost *:80>
    ServerName foo.com
    ServerAlias *.foo.com
    RedirectMatch permanent ^/(.*) https://www.foo.com/$1
</VirtualHost>

<VirtualHost *:443>
    ServerName foo.com
    ServerAlias *.foo.com
</VirtualHost>

Я был бы признателен за некоторые рекомендации здесь.

0
задан 10 September 2016 в 13:49
2 ответа

Фрагмент кода Джоны работал хорошо, но в итоге я использовал mod_macro , чтобы избежать повторяющегося кода.

<Macro ServerAliasesRedirect>
    ServerAlias foo.com
    ServerAlias *.foo.com
    RedirectMatch permanent ^/(.*) https://www.foo.com/$1
</Macro>

<Macro SSL>
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/foo.com.crt
    SSLCertificateKeyFile /etc/apache2/ssl/foo.com.key
    SSLCertificateChainFile /etc/apache2/ssl/foo.com.ca-bundle
</Macro>

<VirtualHost *:80>
    Use ServerAliasesRedirect
</VirtualHost>

<VirtualHost *:443>
    Use SSL
    ServerName www.foo.com    
    # ...directory stuff and so on...
</VirtualHost>

<VirtualHost *:443>
    Use SSL
    Use ServerAliasesRedirect
</VirtualHost>
0
ответ дан 24 November 2019 в 05:48

Избавьтесь от директивы ServerName в виртуальных хостах порта 80 и порта 443.

Добавьте аналогичную директиву соответствия перенаправления, как в виртуальном хосте порта 80, в порт 443 виртуального хоста.

Сделайте другой порт 443 виртуальным хостом с помощью

ServerName www.foo.com

Убедитесь, что этот виртуальный хост появляется и обрабатывается перед другим виртуальным хостом порта 443.

Этот виртуальный хост - это то место, куда пользователи попадают после перенаправления. Так что укажите здесь другую подходящую конфигурацию.

Пример:

<VirtualHost *:80>
    ServerAlias foo.com
    ServerAlias *.foo.com
    RedirectMatch permanent ^/(.*) https://www.foo.com/$1
</VirtualHost>

<VirtualHost *:443>
    ServerName www.foo.com
    # various directives as appropriate for live service to users
    # important to place this before the wildcard VirtualHost below
    # which will match all subdomains 
    # not matched by a preceding VirtualHost
</VirtualHost>

<VirtualHost *:443>
    ServerAlias foo.com
    ServerAlias *.foo.com
    RedirectMatch permanent ^/(.*) https://www.foo.com/$1
</VirtualHost>
0
ответ дан 24 November 2019 в 05:48

Теги

Похожие вопросы