Apache httpd VirtualHost 配置 - 多个站点

Apache httpd VirtualHost 配置 - 多个站点

[建议从 StackExchange 在此处发布]

我有一个网站需要工作,由于 URL 的构建方式,该应用程序似乎是在假设它位于服务器根目录(仅应用程序)的情况下创建的。

在我的开发服务器上,我有其他项目,到目前为止,一个简单的符号链接已经为我工作了,但现在情况并非如此,因为这个新应用程序想要坐在路线上并处理到达:80 的所有 URL。

希望 httpd.conf 中的这段代码能够帮助解释我想要实现的目标:

# default for any not matched elsewhere
<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /var/www/html/newproject
</VirtualHost>
# now try to pick out specific URLs
<VirtualHost localhost/webdev>
  DocumentRoot /var/www/html/existingProject
  ServerName localhost/project
</VirtualHost>

还需要能够从我访问 httpd 实例的任何地方获得相同的效果。希望这有意义。

答案1

您不需要使用VirtualHosts(事实上,我认为它不会在您拥有的格式下工作),您只需要一个简单的Alias(来自mod_alias)。

在现有VirtualHost指令中,创建一个指向的Aliasso ,如下所示,/newproject/somepath/here/newproject

Alias /newproject/ /where/it/really/lives/

然后服务器获得的任何引用/newproject/实际上都会被秘密地、悄悄地转换为/where/it/really/lives/

答案2

如果您想使用 /webdev 作为另一个应用程序的子文件夹,只需将“Alias /webdev /var/www/html/existingProject”添加到第一个虚拟主机并删除第二个。

# default for any not matched elsewhere
<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /var/www/html/newproject
  Alias /webdev /var/www/html/existingProject
</VirtualHost>

And browse for http://localhost/ and http://localhost/webdev/

如果需要添加不同的域,那么:

NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1:80>
  ServerName test.local
  DocumentRoot /var/www/html/existingProject
</VirtualHost>

并在 /etc/hosts 中添加:

127.0.0.1 test.local

And you browse http://test.local/ and http://localhost/

相关内容