httpd.conf:

httpd.conf:

我不知道我怎么配置错了。我的 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

相关内容