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

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 ошибка. Может кто-нибудь указать мне в правильном направлении, пожалуйста?

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

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


В стороне:

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

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

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

Redirect 301 / http://example.com/