我有一个文件夹,里面有一个我正在服务的应用程序。在我的 httpd.conf 中,我设置了一个虚拟主机来指向该文件夹。在开发过程中,我将其设置为指向我拥有的域上的子域test.development.com
。现在我正尝试上线,我将虚拟主机设置为如下所示:
<VirtualHost *:80>
DocumentRoot /var/www/html_site
ServerAlias production.com
ServerAlias www.production.com
</VirtualHost>
使用我的注册商,我设置了一条 A 记录以指向我的 IP。DNS 看起来已正确传播。但是,当我访问 www.production.com 或 production.com 时,它无法到达我的应用程序。如果我添加ServerAlias test.development.com
到 VirtualHost,那么当我浏览 www.production.com 或 production.com 时,我会被重定向到 test.development.com,并且应用程序可以正常工作。我想访问应用程序,但希望 URL 是生产 URL。我该怎么做?
编辑- 从下面的评论中添加额外信息
我运行了一下apachectl -S
,输出结果如下
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:445 development.com (/etc/httpd/conf.d/ssl.conf:75)
*:80 is a NameVirtualHost
default server default (/etc/httpd/conf/httpd.conf:1116)
port 80 namevhost default (/etc/httpd/conf/httpd.conf:1116)
port 80 namevhost sub.development.com (/etc/httpd/conf/httpd.conf:1132)
port 80 namevhost sub2.development.com (/etc/httpd/conf/httpd.conf:1138)
port 80 namevhost development.com (/etc/httpd/conf/httpd.conf:1144)
port 80 namevhost development.com (/etc/httpd/conf/httpd.conf:1165)
port 80 namevhost development.com (/etc/httpd/conf/httpd.conf:1196)
port 80 namevhost development.com (/etc/httpd/conf/httpd.conf:1239)
port 80 namevhost development.com (/etc/httpd/conf/httpd.conf:1245)
port 80 namevhost development.com (/etc/httpd/conf/httpd.conf:1252)
port 80 namevhost development.com (/etc/httpd/conf/httpd.conf:1259)
port 80 namevhost development.com (/etc/httpd/conf/httpd.conf:1267)
port 80 namevhost development.com (/etc/httpd/conf/httpd.conf:1274)
答案1
在这种情况下要检查的两个主要事项是 -
- 验证正确的虚拟主机是否正在处理请求,并且
- 追踪相关的配置位。
在这种情况下,错误的虚拟主机似乎正在按照配置提供请求,但这实际上是由于意外重定向到子域造成的;当子域也映射到正确的虚拟主机时,请求也能正常工作。
当这种意外的重定向出现时,它可能出现在几个地方 - Apache 配置、不太明显的 Apache 配置(.htaccess
文件),或者在正在提供的应用程序/内容中,无论是在重定向元标记中还是在生成 30x 响应的应用程序代码中。