[建议从 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
指令中,创建一个指向的Alias
so ,如下所示,/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/