使用 Ubuntu 18.04
我有主网站www.example.com
,所有文件都托管在其中/var/www/html/
,并且运行正常。现在我想在子域中创建一个新网站www.blog.example.com
。
我为我的网络主机上的子域名创建了一个新的 DNS 记录,并确认它正常工作,当我 ping 时,www.blog.example.com
我看到了正确的服务器 IP 地址。
我的目录结构如下;
/var/www/html
(包含所有文件www.example.com)/var/www/blog.example.com
(包含用于测试的单个 index.html 文件)
我为每个域名都配备了虚拟主机,内容如下;
/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html/rascal.ac.uk>
AllowOverride all
Order allow,deny
allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include conf-available/serve-cgi-bin.conf
</VirtualHost>
/etc/apache2/sites-available/blog.example.com.conf
<VirtualHost *:80>
ServerName blog.example.com
DocumentRoot /var/www/blog.example.com
<Directory /var/www/blog.example.com/>
AllowOverride all
Order allow,deny
allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
还有/etc/apache2/sites-available/000-default.conf
像这样的;
<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory "/var/www/html">
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
所有站点均已启用,并且我已多次重新加载/重新启动 apache。
当我访问时,www.example.com
我可以看到我的主要网站,正如预期的那样。当我访问时,我也可以看到我的主要网站,我应该可以看到我的文件www.blog.example.com
上的内容。index.html
如果我禁用 000-default.conf
两个 URL 都显示了 的内容blog.example.com
,问题可能出在这个文件中吗?
答案1
你有
ServerName blog.example.com
但这是不同于www.blog.example.com。因此 Apache 不会使用该 VirtualHost。它会转而使用默认 VirtualHost。添加
ServerAlias www.blog.example.com
应该可以修复它。请参阅服务器别名。
当然,这些是示例名称。如果这不能解决问题,请编辑您的问题以显示真实的主机名。