【发布时间】:2014-12-28 19:53:58
【问题描述】:
我的目标是发生以下情况,当用户访问左侧下方的网站时,它会将他们带到右侧的目录:
www.example.com or example.com => /var/www/example/public_html/
*.example.com => /var/www/example/public_html/sites/%1/public_html/
我尝试了以下方法:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example/public_html
</VirtualHost>
<VirtualHost *:80>
ServerAlias *.example.com
VirtualDocumentRoot /var/www/example/public_html/sites/%1/public_html
</VirtualHost>
主域在有或没有 www 的情况下都可以工作,但每次我尝试访问任何其他子域时,它都会带我到并给我一个 500 内部服务器错误。当我输入子域时,URL 变为如下所示:
{subdomain}.example.com/sites/{subdomain}/public_html/
我使用的是 Apache 2.4.7,是的,我已经在我的 DNS 服务器上设置了通配符。如果任何答案认为我已经将头撞到墙上 2 周试图让这个工作正常进行,我将不胜感激。
【问题讨论】:
-
好的,那么每个子域都有不同的文件夹吗?例如,如果用户输入 URL test.example.com,它应该转到 test.example.com/sites/test/public_html?我认为您误解了配置,您应该处理另一个虚拟主机,它将处理您要处理的每个子域,对吧?
-
@Facu Farias 是的,你是对的,我为每个子域都有一个不同的文件夹,我看到无数人为网站托管设置了这个文件夹,所以我知道这是可能的。为每个子域创建一个新的 conf 的问题是我必须为每个子域输入一个新的 DNS 条目和 conf 文件。这也需要时间来传播。如果我遗漏了什么,请纠正我。
-
@FacuFarias 我不希望它物理上转到 /sites/{subdomain}/public 我希望 {subdomain}.example.com 将其作为其文档根目录。
标签: apache .htaccess dns virtualhost wildcard-subdomain