Я получил следующее .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/