Перенаправление www на не-www (apache, letsencrypt)

Ubuntu 14.04 Apache 2.4.18

Я установил сертификат SSL с помощью letsencrypt. Он работает хорошо, но для работы я не могу иметь несколько виртуальных хостов, определенных в одном файле конфигурации виртуального хоста. Каждый виртуальный хост должен находиться в своем собственном файле .conf внутри /etc/apache2/sites-available.

. Мне нужно убедиться, что все запросы к www.example.com перенаправляются на example.com. Поскольку мне нужно решить эту проблему в уникальном файле виртуального хоста, я пытаюсь включить правило перезаписи для выполнения перенаправления, но пока это не удается: все запросы https://www.example.com не перенаправляются на https://example.com , и отображается предупреждение «небезопасный веб-сайт».

Вот файл конфигурации виртуального хоста для domain.com-le-ssl.conf.

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName example.com
        ServerAlias www.example.com

        RewriteEngine on
        RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
        RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

        DocumentRoot /home/user_account/www/example.com/public
        <Directory /home/user_account/www/example.com/public>
                Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

        ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/user_account/www/example.com/public/$1

SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
3
задан 13 January 2016 в 12:54
2 ответа

Поскольку ваш сертификат SSL недействителен для www.example.com, когда кто-то заходит на ваш сайт с помощью www.example.com, они получит предупреждение о сертификате. Это происходит независимо от того, обслуживается ли им перенаправление или нет. В противном случае можно было бы создать перенаправление на любой сайт вообще, и это выглядело бы заслуживающим доверия.

Вам нужно либо получить сертификат, охватывающий как www.example.com, так и example.com, либо настройте отдельный виртуальный хост для www.example.com с действующим сертификатом и поместите перенаправление на этот виртуальный хост.

5
ответ дан 3 December 2019 в 05:24
  • Вы не можете включить правило перенаправления http -> https внутри виртуального хоста с поддержкой SSL. Вы не можете по замыслу. Просто прими это. Вам нужен виртуальный хост с обычным HTTP для выполнения перенаправления с HTTP (и это ваша основная ошибка).
  • На самом деле вы можете иметь любой файл конфигурации в каталоге конфигурации в Linux на основе Debian. Вы даже можете удалить категоричные и неудобные каталоги - * и начать использовать каталог vhost.d , как это делаю я. Никто не может заставить вас использовать что-то неудобное.
1
ответ дан 3 December 2019 в 05:24

Теги

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