同一域名下有多个使用 apache 的站点

同一域名下有多个使用 apache 的站点

我正在使用 apache 服务器和 PHP,我刚刚完成了一个 cms,现在我想在不同的 URL 上提供一些演示,但在同一个域内,例如mydomain.com

像这样:

http://www.mydomain.com/demo1

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 )。

相关内容