使用 Apache 将通配符子域名添加到 localhost

使用 Apache 将通配符子域名添加到 localhost

我正在尝试复制本地服务器/机器上的远程服务器的设置,即具有以下虚拟主机的通配符子域。

<VirtualHost *:80>
    DocumentRoot "/Users/User/Sites/tbi"
    ServerName tbi.loc
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/User/Sites/tbi"
    ServerName subdomains.tbi.loc
    ServerAlias *.tbi.loc
</VirtualHost>

此设置似乎不起作用。我确实可以访问http://tbi.loc,但我无法连接到任何子域。我的目标是为非注册访问者提供 www 子域,并为每个注册用户提供单独的子域。

两个虚拟主机的文档根目录是相同的(我尝试使用不同的文档根目录但没有成功),因为我根据子域名确定需要发生什么。

请注意,我想在不依赖 .htaccess 的情况下实现此目的(如果可能的话)。

Apache 主机文件包含此虚拟主机的两个条目。

127.0.0.1 *.tbi.loc
127.0.0.1 tbi.loc

答案1

  1. 你有名称虚拟主机您的 apache 配置中是否配置了 *:80?如果没有,则在连接到 www.tbi.loc 时会显示 tbi.loc 网站。

  2. 您是否有指向测试服务器的 www.tbi.loc、subdomain.dbi.loc、*.tbi.loc 的 dns/hostfile 条目?如果没有,您的浏览器将不知道要连接到哪里。

答案2

您必须有一个有效的 DNS 记录来解析somehost.tbi.loc127.0.0.1并且*.tbi.lochosts 文件中不会执行此操作,因为 hosts 文件不接受通配符条目。

你没有说你正在使用哪个操作系统,但如果你的操作系统支持它,那么你可以轻松配置域名系统使用 *.tbi.loc 的通配符条目

address=/.tbi.loc/127.0.0.1.

一旦解决了 DNS 问题,其他一切都应该开始正常工作。

相关内容