嗨,我正在尝试使用 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.conf
是ServerName
要么注释掉,要么匹配你的example.com
。
如果没有
ServerName
指定,服务器将尝试通过首先向操作系统询问系统主机名来推断客户端可见的主机名,如果失败,则对系统上存在的 IP 地址执行反向查找。
配置文件按字母顺序读取,并使用第一个匹配标头ServerName
的 或。由于是 的第一个匹配项,因此将使用它来代替您的新配置文件。ServerAlias
Host
000-default.conf
example.com
example.com.conf
您有以下几种选择:
- 添加/编辑为 以外的其他
ServerName
内容。000-default.conf
example.com
- 删除
000-default.conf
(带sudo a2dissite 000-default.conf
)将使您的example.com.conf
虚拟主机成为默认虚拟主机。但是,如果您稍后添加按字母顺序排列的配置文件,它将成为默认配置文件,因此这种方法可能会产生意外行为。
答案3
example.com.conf
我实际上通过改变文件中的某些配置解决了这个问题
我只是改变了ServerName
并ServerAlias
从
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 配置没有传播,后来才意识到浏览器缓存了旧的页面配置)。在禁用缓存的情况下测试您的更改!