我是Linux和apache的新手。
我有一个使用apache托管在我的计算机上的网站。假设域为www.myweb.com
。现在,我要制作3个子域a.myweb.com
和b.myweb.com
。
我的第一个问题是我可以通过使用虚拟主机来做到这一点。因为我可以找到的所有虚拟主机示例都使用不同的域,所以我不确定它是否也适用于子域。
我的第二个问题是基于虚拟主机可用于子域的。在我的httpd.conf
文件中,该值DocumentRoot
是/srv/http
。在下/srv/http
,我创建了3个文件夹default
,a
和b
。这是我的httpd-vhosts.conf
:
<VirtualHost myIP:80>
ServerAdmin [email protected]
DocumentRoot "/srv/http/default/public"
ServerName www.myweb.com
ServerAlias myweb.com
ErrorLog "/srv/http/default/logs/error.log"
CustomLog "/srv/http/default/logs/access.log" combined
<Directory />
Options FollowSymLinks Indexes
Require all granted
</Directory>
</VirtualHost>
<VirtualHost myIP:80>
ServerAdmin [email protected]
DocumentRoot "/srv/http/a/public"
ServerName a.myweb.com
ErrorLog "/srv/http/a/logs/error.log"
CustomLog "/srv/http/a/logs/access.log" combined
</VirtualHost>
<VirtualHost myIP:80>
ServerAdmin [email protected]
DocumentRoot "/srv/http/b/public"
ServerName b.myweb.com
ErrorLog "/srv/http/b/logs/error.log"
CustomLog "/srv/http/b/logs/access.log" combined
<Directory />
Options FollowSymLinks Indexes
Require all granted
</Directory>
</VirtualHost>
现在的问题是,当我输入www.myweb.com
,myweb.com
,a.myweb.com
或b.myweb.com
在浏览器中,我一直在采取DocumentRoot
,这是/srv/http
。那么,我做错了什么吗?还是子域无法以这种方式工作?非常感谢。
我注意到您<VirtualHost myIP:80>
在virtualhost部分的开头使用了。我使用<VirtualHost *:80>
了所有基于命名的虚拟主机-有关为基于名称的虚拟主机与基于IP的虚拟主机配置服务器之间的区别,请参见如何设置Apache虚拟主机配置(包含示例)。如果服务器具有多个IP地址,并且您希望这些站点使用不同的IP地址进行响应,那么我想您应该输入一个IP地址,但是如果应该使用服务器正在侦听的任何IP地址访问所有站点,请尝试使用而不是virtualhost部分中的IP地址为“ *”,以查看是否有区别。否则,您的配置看起来与我的配置相似。您也可以尝试httpd -S
检查该文章中建议的VirtualHost配置语法,以查看该检查报告的Apache报告是否不正确。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句