![同一域名下有多个使用 apache 的站点](https://linux22.com/image/582052/%E5%90%8C%E4%B8%80%E5%9F%9F%E5%90%8D%E4%B8%8B%E6%9C%89%E5%A4%9A%E4%B8%AA%E4%BD%BF%E7%94%A8%20apache%20%E7%9A%84%E7%AB%99%E7%82%B9.png)
我正在使用 apache 服务器和 PHP,我刚刚完成了一个 cms,现在我想在不同的 URL 上提供一些演示,但在同一个域内,例如mydomain.com
。
像这样:
http://www.mydomain.com/demo2 ...
如果这些是我的服务器上相应的真实路径:
/myserver/cms/demo1
/myserver/cms/demo2
我不想改变我的 cms 代码来实现这一点(如果可能的话)
我想到的第一个解决方案是为每个演示购买一个域名,然后使用虚拟主机将演示映射到域名。这正是我想要的,但那太贵了……
使用 Alias 指令,
Alias /demo1/ /myserver/cms/demo1
$_SERVER['REQUEST_URI']
几乎是完美的,但我仍然遇到了变量从 修改/
为的问题/demo1
,不幸的是这使我的cms感到困惑。
我需要一种真正不引人注目的方式来做到这一点,就像使用虚拟主机一样。
如果您也遇到过同样的问题,我很想听听您是如何解决的。
答案1
我使用带有通配符 DNS 条目(*.example.com 始终解析为同一主机)的子域名(demo1.example.com、demo2.example.com 等),这样我就不必进行任何 DNS 更改,只需向 Apache 添加更多虚拟主机即可。
效果很好。
答案2
回答我自己::
如果你对这个话题感兴趣,下面是我的做法(而且很有效,感谢 gravyface):
<VirtualHost *:80>
ServerName test.jetdemo
ServerAlias test.jetdemo
DocumentRoot "/Volumes/Mac/projets/jetsites/demo/ecommerce/store1/application/www"
</VirtualHost>
<VirtualHost *:80>
ServerName jetdemo
ServerAlias *.jetdemo
DocumentRoot "/Volumes/Mac/projets/jetsites/demo/"
</VirtualHost>
我注意到虚拟主机块的顺序很重要:包含通配符( ServerAlias *.jetdemo )的块必须是最后一个,否则它将不起作用!或者您必须删除通配符( ServerAlias jetdemo )。