Назад | Перейти на главную страницу

Перенаправление с 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>

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

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

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