我正在设置一台运行Apache2的服务器(Ubuntu Server 18.04),以满足我自己的个人测试和开发需求。我只能通过其本地IP(例如http://10.0.0.125
)或它在本地网络上的名称(例如)访问它http://jeeves
,但是现在还可以。
我想在此服务器上创建几个子域以保持无关站点的正确隔离,但是我不相信我可以使用实际的子域:http://sub.10.0.0.125
由于IP不是域,因此无法工作,因此不能有子域,并且http://sub.jeeves
不起作用,因为浏览器解释.jeeves
为TLD而不是服务器名称。
所以我想出了另一个解决方案:
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/html
AliasMatch "^/~(.*)" "/var/www/$1"
</VirtualHost>
现在,我可以创建目录/var/www/sub
并通过进行访问http://jeeves/~sub/
。
我认为这是一个很好的折衷方案...除外,因为它不是子域,并且不能像一个子域那样工作,所以类似的链接<a href="/foo/">
将被引用http://jeeves/foo/
而不是所希望的http://jeeves/~sub/foo/
。我可以在每个站点的代码中进行处理,但这远非理想。
我的问题:是否有任何方法可以使Apache 出于所有意图和目的(尤其是链接)/~sub/
将URL 的一部分视为子域?某种BaseDir指令,也许吗?我找不到一个,但这并不意味着它不存在。
在提出建议之前:为该服务器获取实际域有点超出我当前的需求范围;运行专用的DNS服务器似乎增加了太多的复杂性;并且在每个系统上更改主机文件都不是完全可缩放的(例如,在iPhone上也不是一件容易的事)。
我觉得我的解决方案如果可以解决的话,将是满足我的需求的理想选择。