假设我的主站点是www.mySite.com
。路径是:
/home/itsme/public_html/
我想设置一个临时服务器,staging.mySite.com
重定向到:
/home/itsme/public_html/staging
我可以使用 CNAME 来实现这一点吗?:
staging CNAME www.mySite.com/staging.
或者由于目标不是根域而导致失败?
答案1
这是行不通的。
DNS 中的 CNAME 记录将一个域名作为另一个域名的别名,并且与 URL 的任何其他部分均无连接。
您可以做的是使用 CNAME 或 DNS 中的多个 A 记录来确保两个地址指向同一台机器,然后在该机器上配置您的 Web 服务器以启用响应不同名称的多个虚拟主机。
具体操作方法取决于你运行的 Web 服务器软件。Apache 的操作方法请参见Apache 虚拟主机文档。
答案2
好的。对于这样的部署过程,您有很多可能的解决方案。
Don 写的内容很不错。如果您使用 Apache 虚拟主机,则可以轻松在 IP 上托管多个独立站点,但只有当您能够控制 DNS 或想要应用本地静态主机配置(/etc/hosts 或 %SystemRoot%\system32\drivers\etc\hosts)时,它才有用。
您必须了解 HTTP 的工作原理。我不知道您对此了解多少。简而言之:这个想法是创建一个新域,例如前缀为“test.YOURDOMAIN.COM”,并让它拥有完全自己的目录,而不是子目录。如果您在客户端上输入 HOSTS 文件,则可以使用浏览器访问服务器上的网站,该服务器实际上并不托管该域,但使用该主机配置,如果您正确配置了服务器,您的浏览器将请求测试域并检索这些文件。对于您来说(实际上您似乎具有 DNS 访问权限),您可以省略 hosts 文件部分,因为也许您真的可以配置自己的子域。
这种方法很好,因为您可以轻松切换 - 立即切换,而不会中断服务或产生副作用(启用/禁用站点,重新配置 apache)。您不必乱搞目录,也不必创建可能疯狂的文件系统状态(如果未禁用访问,服务将不可用......对于负载很大的站点来说,这很麻烦 - 或者如果您想保持服务质量 - 这是更好的方法。
所以如果你想这样做,并且你有一个 Apache,你会......
- 创建虚拟主机(http://httpd.apache.org/docs/2.2/en/vhosts/) 带有虚构的域前缀
- 应用您的生产虚拟主机,以便您的客户仍然可以访问您的网站,进行两次测试并通过隧道传输:)
- 将域名添加到运行测试的 hosts 文件中
- 检查它是否真的有效并且你的网站仍然可用
对于 Debian GNU/Linux 服务器环境,可以为您提供更详细的提示。RHEL 衍生产品我没有足够的经验。