我不知道我怎么配置错了。我的 Apache 能力很弱。求助!
我正在尝试为两个不同的虚拟站点提供服务。我在 Windows 上运行。
我已将 c:/webs 设置为我的虚拟根目录。在 c:/webs 中,我有两个子文件夹,c:/webs/site1 和 c:/webs/site2。
我认为我的配置文件中的相关条目是:
httpd.conf:
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
</Directory>
#later
DocumentRoot "c:/webs"
<Directory "c:/webs">
Options Indexes FollowSymLinks MultiViews Includes ExecCGI
AllowOverride All
Order Allow,Deny
Allow from All
Require all granted
</Directory>
# at end of file
Include conf/virtuals.conf
虚拟器.conf:
<virtualhost *:80>
DocumentRoot "c:/webs/site1/public"
ServerName site1
</virtualhost>
<virtualhost *:80>
DocumentRoot "c:/webs/site2"
ServerName site2
</virtualhost>
问题是,无论我使用哪个 URL,我都会将 site1 作为根。因此,以下 URL 实际上都指向 site1:
http://myserver
http://myserver/site1
http://myserver/site2
答案1
您所做的是配置虚拟主机,使其像这样工作(这是使用ServerName
指令配置的:
http://
(服务器名称只是和下一个之间的部分/
,因此在您的情况下,它只是myserver
并且site1
只是服务器上的一个目录)。
如果您希望网站按您描述的方式工作,您只需配置一个虚拟主机并指向它c:/webs
,然后添加Alias
指令以将子目录重定向到public
网站的目录:
<virtualhost *:80>
DocumentRoot "c:/webs/"
ServerName myserver
Alias "/site1" "c:/webs/site1/public"
Alias "/site2" "c:/webs/site2/public"
</virtualhost>
顺便说一句,您总是得到 site1 的原因是因为您根本没有匹配的虚拟主机配置http://myserver
,所以 Apache 只是使用找到的第一个作为默认值,而这恰好是的site1
。