ServerAlias 不起作用 - ERR_NAME_NOT_RESOLVED

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

ERR_NAME_NOT_RESOLVED 是 DNS 解析错误,表明请求甚至没有到达您的服务器。

除了问题中提供的配置外,您还需要在指向您服务器的 DNS 中定义相应的A记录(CNAME如果这些是同一个域,则为记录,只是子域不同)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,只Redirect需要一个 mod_alias。假设您还想规范化主机名?您不需要检查,SERVER_NAME因为大概您想重定向到达端口 80 vHost 的任何请求?

例如,以下内容可能就足够了:

Redirect 301 / http://example.com/

相关内容