Apache 服务器未显示正确的网站

Apache 服务器未显示正确的网站

嗨,我正在尝试使用 VPS 学习 Apache2。到目前为止一切正常,但我找不到遇到的一个问题的原因。

我的/var/www/example.com文件夹中有一个网站设置。我在 中为其创建了一个配置文件/etc/apache2/sites-available/example.com.conf。现在,当我访问www.example.com所需的网站时,会显示出来。但是,如果我www.在 URL 中输入 并直接输入,example.com则会显示 Apache 默认页面。

例如.com.conf

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

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

apache2.conf

DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

AccessFileName .htaccess

<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

IncludeOptional conf-enabled/*.conf

IncludeOptional sites-enabled/*.conf

答案1

改变

服务器别名www.mydomain.com*我的域名.com

服务器别名 mydomain.com *.mydomain.com

重新启动服务。

执行 nslookupwww.mydomain.com和 mydomain.com 以确保 IP 相同。

即通过控制台或命令提示符,输入
nslookup mydomain.com
nslookupwww.mydomain.com


确保 IP 地址相同。如果不同,请为 mydomain.com 创建与以下 IP 地址相同的域“A”记录www.mydomain.com。还请查看 apache 的 error.log。

答案2

请记住使用 启用您新创建的站点a2ensite example.com

如果问题仍然存在,很可能/etc/apache2/sites-enabled/000-default.confServerName要么注释掉,要么匹配你的example.com

如果没有ServerName指定,服务器将尝试通过首先向操作系统询问系统主机名来推断客户端可见的主机名,如果失败,则对系统上存在的 IP 地址执行反向查找。

配置文件按字母顺序读取,并使用第一个匹配标头ServerName的 或。由于是 的第一个匹配项,因此将使用它来代替您的新配置文件。ServerAliasHost000-default.confexample.comexample.com.conf

您有以下几种选择:

  • 添加/编辑为 以外的其他ServerName内容。000-default.confexample.com
  • 删除000-default.conf(带sudo a2dissite 000-default.conf)将使您的example.com.conf虚拟主机成为默认虚拟主机。但是,如果您稍后添加按字母顺序排列的配置文件,它将成为默认配置文件,因此这种方法可能会产生意外行为。

答案3

example.com.conf我实际上通过改变文件中的某些配置解决了这个问题
我只是改变了ServerNameServerAlias

ServerName example.com
ServerAlias www.example.com *.example.com

ServerName www.example.com
ServerAlias example.com
# I removed the wildcart

现在网站运行正常

谢谢大家帮助我解决这个问题。
原始答案来自 emadelbieh在堆栈溢出中。

答案4

如果您已经应用了一些配置更改但未看到任何结果,请确保您的浏览器没有缓存错误/旧页面。在 Firefox 中,您可以打开 Dev Tools (F12),然后单击“网络”选项卡,再选中“禁用缓存”复选标记,然后刷新页面。

禁用缓存可以帮助解决问题并验证您是否已按预期设置了网站(我自己就为此困惑了一个小时,想知道为什么我的 Apache 配置没有传播,后来才意识到浏览器缓存了旧的页面配置)。在禁用缓存的情况下测试您的更改!

相关内容