我正在尝试复制本地服务器/机器上的远程服务器的设置,即具有以下虚拟主机的通配符子域。
<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
你有名称虚拟主机您的 apache 配置中是否配置了 *:80?如果没有,则在连接到 www.tbi.loc 时会显示 tbi.loc 网站。
您是否有指向测试服务器的 www.tbi.loc、subdomain.dbi.loc、*.tbi.loc 的 dns/hostfile 条目?如果没有,您的浏览器将不知道要连接到哪里。
答案2
您必须有一个有效的 DNS 记录来解析somehost.tbi.loc
,127.0.0.1
并且*.tbi.loc
hosts 文件中不会执行此操作,因为 hosts 文件不接受通配符条目。
你没有说你正在使用哪个操作系统,但如果你的操作系统支持它,那么你可以轻松配置域名系统使用 *.tbi.loc 的通配符条目
address=/.tbi.loc/127.0.0.1.
一旦解决了 DNS 问题,其他一切都应该开始正常工作。