apache - 为什么 Apache 在尝试包含来自另一台服务器的 SSI 时会得到 404?
问题描述
我有两个网站可以生成我想合并到一个网页中的数据。站点一(“主”站点)生成大部分网页,站点二包含我想包含在该页面上的其他数据。我认为最好的方法是使用 SSI 将站点 2中的数据包含到站点 1生成的网页中。站点 1上的 Apache似乎正确地联系站点 2,但站点 2返回 404。如果我使用浏览器直接联系站点 2 ,使用与站点 1使用的完全相同的 URL ,我会得到正确的数据。为什么站点 1上的 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
有谁知道为什么站点 1上的 Apache 会从站点 2获得 404 ,但通用浏览器中完全相同的 URL 会得到数据吗?
解决方案
从文档中:
该值是一个(% 编码的)URL 路径。URL不能包含方案或主机名,只能包含路径和可选的查询字符串。如果它不以斜杠 (/) 开头,则它被认为是相对于当前文档的。
简而言之:它不支持外部 URL。
推荐阅读
- java - 对于同一个字符串,SQLite 的长度是否会返回与 Java 的长度方法不同的值?
- bash - 使用 awk 在循环中将文件名添加到 fasta 标头?
- html - 如何从我的网站上删除边框?
- prometheus - Prometheus - 缩短标签
- assembly - 阅读汇编代码并乘以值
- c++ - 让代码缩进遵循预处理器指令缩进
- powershell - 删除项目抛出未找到文件
- python - 使用 Selenium 的 python 语言中的菜单访问问题?
- r - 如何从sql查询返回连接值
- rest - Google drive v3 REST API 返回最多 460 条记录