ServerAlias ​​не работает - ERR_NAME_NOT_RESOLVED

Я получил следующий .conf файл:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/example/public

    <Directory /var/www/html/example>
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =example.com [OR]
    RewriteCond %{SERVER_NAME} =www.example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Я также использую Let's Encrypt SSL. Все запросы к example.com работают нормально и перенаправляются на HTTPS. Проблема в том, что псевдоним домена не работает. Когда я запрашиваю www.example.com , я получаю ошибку ERR_NAME_NOT_RESOLVED . Может ли кто-нибудь указать мне правильное направление?

1
задан 3 October 2019 в 00:22
1 ответ

ERR_NAME_NOT_RESOLVED - это ошибка разрешения DNS, которая предполагает, что запрос даже не достигает вашего сервера.

В дополнение к конфигурации, представленной в вашем вопросе, вам также понадобится соответствующий A Запись (или запись CNAME , если это один и тот же домен, только с разницей в субдомене), определенная в DNS, которая указывает www.example.com на ваш сервер. Без этого запрос не может быть разрешен .


Кроме того:

 RewriteEngine on
RewriteCond% {SERVER_NAME} = example.com [ИЛИ]
RewriteCond% {SERVER_NAME} = www.example.com
RewriteRule ^ https: //% {SERVER_NAME}% {REQUEST_URI} [END, NE, R = постоянный]
 

Ваш блок перенаправления слишком сложен. Mod_rewrite не нужен, достаточно одного mod_alias Redirect . Предполагая, что вы также хотите канонизировать имя хоста?Вам не нужно проверять SERVER_NAME , потому что, предположительно, вы хотите перенаправить любой запрос, достигший порта 80 vHost?

Например, вероятно, будет достаточно следующего:

Redirect 301 / http://example.com/
0
ответ дан 4 December 2019 в 02:42

Теги

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