为什么 Apache 在尝试包含来自另一台服务器的 SSI 时得到 404?
Why does Apache get a 404 when trying to include SSI from another server?
我有两个生成数据的网站,我想将它们合并到一个网页中。 站点一("main" 站点)生成大部分网页,站点二 包含我想包含的附加数据那个页面。
我认为最好的方法是使用 SSI 将来自 site two 的数据包含到 site one 生成的网页中。 site one 上的 Apache 似乎可以正确联系 site two,但是 site two returns a 404. 如果我直接使用浏览器联系 站点二,使用与 站点一 完全相同的 URL,我得到正确的数据。为什么 站点 one 上的 Apache 不能获得相同的数据?
我尝试了两种方法来包含来自 站点二 的数据,一种是直接包含,另一种是使用反向代理,但都不起作用。其他(本地)SSI 和反向代理在此页面上工作正常。这是两个包含行:
<!--#include virtual="/servertwodata" -->
<!--#include virtual="http://www.servertwo.com/execs/somescript.sh?task=overview" -->
我在 Apache 错误日志中得到的错误是:
unable to include "http://www.servertwo.com/execs/somescript.sh?task=overview" in parsed file /var/www/html/index.html, subrequest returned 404, referer: http://www.serverone.com/index.html
有谁知道为什么 站点一 上的 Apache 会从 站点二 获得 404,但完全相同 URL 在通用浏览器中可以获得数据吗?
The value is a (%-encoded) URL-path. The URL cannot contain a scheme or hostname, only a path and an optional query string. If it does not begin with a slash (/) then it is taken to be relative to the current document.
简而言之:它不支持外部 URL。
事实证明,反向代理确实会丢弃作为 proxypass 配置参数的一部分包含的任何查询字符串。我从 proxypass 参数中删除了查询字符串并将其移动到 SSI include virtual 标记,它不再从 [=12 获取 404 =]站点二。
放在网页上的响应是乱七八糟的象形文字,但造成这种情况的原因是另一个问题。
我有两个生成数据的网站,我想将它们合并到一个网页中。 站点一("main" 站点)生成大部分网页,站点二 包含我想包含的附加数据那个页面。 我认为最好的方法是使用 SSI 将来自 site two 的数据包含到 site one 生成的网页中。 site one 上的 Apache 似乎可以正确联系 site two,但是 site two returns a 404. 如果我直接使用浏览器联系 站点二,使用与 站点一 完全相同的 URL,我得到正确的数据。为什么 站点 one 上的 Apache 不能获得相同的数据?
我尝试了两种方法来包含来自 站点二 的数据,一种是直接包含,另一种是使用反向代理,但都不起作用。其他(本地)SSI 和反向代理在此页面上工作正常。这是两个包含行:
<!--#include virtual="/servertwodata" -->
<!--#include virtual="http://www.servertwo.com/execs/somescript.sh?task=overview" -->
我在 Apache 错误日志中得到的错误是:
unable to include "http://www.servertwo.com/execs/somescript.sh?task=overview" in parsed file /var/www/html/index.html, subrequest returned 404, referer: http://www.serverone.com/index.html
有谁知道为什么 站点一 上的 Apache 会从 站点二 获得 404,但完全相同 URL 在通用浏览器中可以获得数据吗?
The value is a (%-encoded) URL-path. The URL cannot contain a scheme or hostname, only a path and an optional query string. If it does not begin with a slash (/) then it is taken to be relative to the current document.
简而言之:它不支持外部 URL。
事实证明,反向代理确实会丢弃作为 proxypass 配置参数的一部分包含的任何查询字符串。我从 proxypass 参数中删除了查询字符串并将其移动到 SSI include virtual 标记,它不再从 [=12 获取 404 =]站点二。 放在网页上的响应是乱七八糟的象形文字,但造成这种情况的原因是另一个问题。