我有一台位于防火墙后面的 apache2 服务器。外部地址是 24.89.xxx.xxx,内部地址是 10.10.58.1
服务器的主机名为“myhost”。我没有 24.89.xxx.xxx 地址的 DNS 条目,因为它尚未启用。将解析为该地址的域名目前正用于现有网站。
我希望 web-dev 团队能够通过 24.89.xxx.xxx 地址访问该网站。但是,每当他们查看该网站时,所有 URL 都会插入本地主机名。
因此,<a href="index.php?id=9">Link</a>
生成一个 URLhttp://myhost/index.php?id=9
但是,我希望它生成一个 URLhttp://24.89.xxx.xxx/index.php?id=9
Apache 安装在 Debian Lenny 上。我使用的是“默认”站点。我尝试过将 NamedVirtualHost 设置为 IP、将 ServerName 设置为 IP、将 UseCanonicalName 关闭、将 VirualHost 设置为等等……我所做的一切都没有产生任何变化。是的,我每次都会重新加载配置。
我也尝试过切断防火墙,但结果是一样的。我还对 /etc/hosts 文件做了大量更改。
在 /etc/hosts 中:
127.0.0.1 localhost
10.10.58.1 myhost
24.89.xxx.xxx www.inusedomain.org
答案1
仔细阅读后,我认为这可能是 php 问题。通常,您需要设置某种“基本网址' 在网站的配置中,这样 php 就知道如何创建所有链接(“覆盖 URL”)。寻找 config.php,或者网站根目录中的类似内容。
如果您的开发人员水平不高,那么它可能不存在于单个变量中,而是存在于各个地方。要找到它,或者可能在单个位置找到它,请使用grep -Ri --include='*.php*' 'localhost' *
,将 localhost 更改为当前被覆盖的任何内容。
不是一个完整的答案:
我不完全确定,但我想我记得将虚拟主机绑定到特定 IP,或者更改 listen 指令需要完全重启,而不仅仅是正常重启或重新加载配置。
答案2
我可以保证问题不在于 apache。您应该查看生成 html 内容的程序...例如 php 等。