Вызовите https://и www. с виртуальным хостом apache2

Я везде искал решение смочь вызвать https://www перед использованием всего моего URL виртуальный хост. Это - то, что я в настоящее время имею в своем 000-default.conf файле:

<VirtualHost *:80>
ServerName www.domain.com
Redirect / https://www.domain.com/
</VirtualHost >

Это означает, что весь www. перенаправил бы к https://www.

Теперь я пропускаю код для перенаправления всех/любых других форм URL к https://www. использование того же понятия (не RewriteEngine, потому что Apache предлагает не использовать RewriteEngine на простых перенаправлениях).

Например:

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

они были бы все переходить в => https://www.domain.com

Если бы кто-то может указать на меня в правильном направлении, которое было бы большим!

5
задан 28 July 2015 в 16:09

3 ответа

Это работало на меня, можно протестировать его на моем домене, если Вам нравится.

<VirtualHost *:80>
    ServerName freesoftwareservers.com
    ServerAlias *.freesoftwareservers.com
    Redirect / https://www.freesoftwareservers.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName freesoftwareservers.com
    ServerAlias *.freesoftwareservers.com

http://domain.com

http://www.domain.com

https://domain.com

я имел проблемы, повторно реализовывая это и нашел, что, если я удалил 000-default.conf символьную ссылку из/sites-enabled этого, работал. Не уверенный, что является соглашением, но у меня есть 0 других записей DNS на стороне DNS, и мой Apache делает все перенаправление, и это работает.

13
ответ дан 23 November 2019 в 08:40

Для добавления к ответу thomasrutter у меня все еще была проблема, когда я делал то, что он предложил. Иногда Вы, возможно, должны добавить в информации о SSL к https://example.com виртуальный хост. Например, когда Вы используете SNI для разрешения нескольких сертификатов SSL на ipaddress.

С этим можно получить ssl_error_rx_record_too_long ошибку, так как сервер будет возвращать простой текст запросу HTTPS.

# Redirect https://example.com to main site
<VirtualHost *:443>
  ServerName example.com
  Redirect / https://www.example.com/

  #for Apache Old Style (Valid on Apache <= 2.4.8) - just add in whats needed for your version
  SSLEngine on
  SSLCertificateFile        "your certificate file.crt"
  SSLCertificateKeyFile     "your key file.key"
  SSLCertificateChainFile   "your chain file.crt"
</VirtualHost >
1
ответ дан 23 November 2019 в 08:40

Вам нужны три перенаправления, чтобы сделать то, что Вы хотите:

http://example.com кому: https://www.example.com

http://www.example.com кому: https://www.example.com

https://example.com кому: https://www.example.com

Первые два являются от порта 80 плоскостями HTTP, таким образом, у Вас есть VirtualHost для них. Можно заставить раздел VirtualHost относиться больше чем к одному имени хоста (www.example.com и example.com) при наличии раздела ServerAlias:

# Redirect http://example.com and http://www.example.com to main site
<VirtualHost *:80>
  ServerName www.example.com
  ServerAlias example.com

  Redirect / https://www.example.com/
</VirtualHost >

Затем Вам нужен VirtualHost для Вашего https://example.com только. HTTPS использует порт 443:

# Redirect https://example.com to main site
<VirtualHost *:443>
  ServerName example.com

  Redirect / https://www.example.com/
</VirtualHost >

Примечание: необходимо будет настроить настройки SSL там также с сертификатом, который поддерживает И домен с и без "www".., установка настроек SSL выходит за рамки этого вопроса. (Добавленная информация: они могут быть двумя отдельными сертификатами, если Вам нравится; больше распространено иметь много отдельных сертификатов теперь, у нас есть вещи, любят, Давайте Зашифруем и SNI),

Если у Вас нет сертификата SSL, который поддерживает Ваш домен без "www". затем Вы не сможете сделать перенаправление от https://example.com. Перенаправление только произойдет после того, как браузер проверяет сертификат. Пользователю подарили бы несогласованную ошибку сертификата.

Затем наконец, Вам нужен Ваш раздел VirtualHost для "допустимого" сайта: HTTPS (порт 443) на www.example.com:

# Main site
<VirtualHost *:443>
  ServerName www.example.com

  # Put all your configuration for this site here

</VirtualHost >

После того как Вы протестировали свои перенаправления, и Вы рады, что они работают, можно сделать их постоянными путем определения 301 состояния в перенаправлении (изменение Redirect / https://www.example.com/ кому: Redirect 301 / https://www.example.com/ везде), и путем включения HSTS, который вынуждает браузеры пользователей помнить предпочтение HTTPS.

4
ответ дан 23 November 2019 в 08:40

Другие вопросы по тегам:

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