mod_vhost_alias VirtualDocumentRoot 许多域

mod_vhost_alias VirtualDocumentRoot 许多域

我确信我不是第一个遇到这个问题的人,但是我无论如何都找不到答案——尽管这可能是因为不知道要搜索什么。

我需要在 Ubuntu 服务器上托管许多客户网站。一切运行良好,但我想设置动态虚拟主机,以便我可以自动在服务器上创建 wordpress 网站。我的mod_vhost_alias模块已经运行,对此感到满意,但是,我遇到了.com域与.co.uk.com.au之间的问题,并且VirtualDocumentRoot

对于诸如这样的域,example.com我希望所有请求都www.exapmple.com指向example.com一个名为的目录/var/webroot/example.com,例如,对于诸如这样的域example.co.uk,我希望所有请求都www.example.co.uk指向example.co.uk一个名为的目录/var/webroot/example.co.uk

我目前拥有的 VDR 如下所示...

VirtualDocumentRoot /var/webroot/%-2.0.%-1.0

它抓取了倒数第二部分和最后一部分。这对于 来说很有效,example.com但是对于 来说example.co.uk它正在寻找目录/var/webroot/co.uk- 这并不理想!

有办法解决这个问题吗?我需要使用吗mod_rewrite?如果需要,如何使用?

答案1

在这种情况下,我只需打破符号链接,而不是使用非常具体的(并且可能很脆弱的)RewriteRule

使用VirtualDocumentRoot /var/webroot/%0,然后在其中/var/webroot/创建一个www.example.com指向 真实目录的符号example.com链接。这将适用于您需要的任何深度的域,此外,如果您的站点www由于某种原因应该具有不同的内容,或者您​​想要指向aaa.example.com与 相同的内容,则它会更加灵活example.com

如果这不符合你的口味,那么你确实可以使用mod_rewrite

DocumentRoot /var/webroot
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^/(.*)$ /%2/$1

它只会始终在 中查找域名/var/webrootwww如果在查找之前有域名,则将其前面的 撕掉。

或者,您也可以重定向以删除(或添加)www所有请求,而不是为两个域提供相同的内容。

相关内容