在 IIS8.5 中运行 WordPress 时,遇到上传图片出错的问题:此响应不是合法的 JSON 响应。
按 F12 打开开发者工具看了一下,原来是在上传完成图片后返回的 JSON 头部,多一段 HTML 代码:
<head><title>文档已移动</title></head>
<body><h1>对象已移动</h1>可在<a HREF="http://www.ilinshu.cn/wp-json/wp/v2/media/448">此处</a>找到该文档</body>
真正的 JSON 数据在这段 HTML 后面。
经过多方查找资料,得知这段代码是 IIS 插入的,但是目前没有明确的方法来禁止 IIS 的这一行为。微软曾经提供过一个hotfix,但是已经不再维护了,不适用于 IIS8.5 。微软推荐的解决办法是升级到最新的 Windows 版本,使用 Windows10 或最新的 Windows Server 版本。
话是这样说,但是升级的话,硬件要求最低要2G内存才行,增加了多余的经济负担(主要还是因为穷~)。其实我早就想完全换到 Linux ,但这是不可能的,因为还有一些服务需要 Windows Server 来运行。
其实目前来说,仅有的一个方案就是切换到 Apache,Apache 反向代理 IIS ,统一提供对外的 Web 服务。IIS 只运行 ASP.NET 应用,PHP 通过 Apache 来运行。
方案是可行的,唯一的缺点就是网站的部署稍微麻烦了一点,不过还算可以接受。
参考链接:
https://core.trac.wordpress.org/ticket/46311
https://stackoverflow.com/questions/12074730/w7-pro-iis-7-5-overwrites-php-location-header