我正在构建一个多租户php网络应用程序,并且已经设置了我的通配符子域,这些子域正在按预期工作。但是,我试图将域名指向我的应用服务器,如下所示:
记录: domainToRedirect.com 123.123.123.123
CNAME: www subdomain.example.com
当我在浏览器上打印出我的SERVER_NAME变量时,似乎CNAME映射无法正常工作,因为我将 domainToRedirect.com 作为输出。
似乎 domainToRedirect.com 映射到A记录而不是CNAME。
我想要的是一个场景, domainToRedirect.com 只对最终用户显示,就好像他们访问过 subdomain.example.com 但是当然,网址栏显示它们位于 domainToRedirect.com
编辑1:
我需要SERVER_NAME的原因是因为我正在使用它来从我的mysql数据库中的记录中确定我的客户帐户。
我正在使用apache作为我的网络服务器。
编辑2
这是我的vhost文件的样子:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com *.example.com
DirectoryIndex index.php
DocumentRoot /var/www/html/example.com/public_html/public
</VirtualHost>
答案 0 :(得分:1)
首先,编辑您的虚拟主机信息,然后添加ServerAlias www.subdomain.com
并重新启动apache。
其次,您必须使用HTTP_HOST
为您提供请求中的主机名,而不是SERVER_NAME
,它为您提供Apache上的虚拟主机ServerName
请在此处阅读:https://serverfault.com/questions/496597/php-fpm-server-name-sub-domains-using-nginx
答案 1 :(得分:1)
如果用户正在访问domaintoredirect.com
(这是他们的地址栏中显示的内容),那么他们正在访问domaintoredirect.com
就是这样。浏览器正在使用domaintoredirect.com
Host
期间domaintoredirect.com
向服务器发送请求。
DNS CNAME只是IP地址配置的别名。
CNAME foo.bar example.com
此DNS条目表示foo.bar
的规范名称实际上是example.com
。换句话说,当尝试向foo.bar
发出请求以发现服务器的IP地址时,请求example.com
的记录。它涉及的是浏览器如何发现发送请求的IP地址;如果您正在访问foo.bar
,那么您仍然在访问foo.bar
,并且在访问example.com
时,您仍在访问example.com
。 CNAME仅用于共享配置信息,指向不同的现有DNS记录,而不是重复信息。
如果要从一个域重定向到另一个域,则需要在HTTP级别执行此操作;对于重定向HTTP,DNS有几个级别太低。你仍然无法“掩盖”一个领域;地址栏中的域是访问域,句点。