JavaScript 更改服务器后出现错误 (Wordpress)

JavaScript Errors After Changing Servers (Wordpress)

我将 Wordpress 网站移到了新服务器上。我通过直接将文件夹复制到新服务器来完成此操作。 Web 服务器是 IIS 10.0,PHP 版本是 7.4.13。在编辑 Post 时,我发现无法从图库中添加图像。我还有一个奇怪的 JavaScript 错误,这在旧服务器上不会发生。错误与 thickbox.js:

有关

控制台中的错误是

Uncaught SyntaxError: missing ) after argument list

奇怪的是原文件中没有":

我比较了 IIS 配置,没有发现任何差异。其他都没有改变,wp-config.php 文件与数据库相同。有没有其他人遇到过类似的问题?

我遇到了 this 问题,但这与 post 的内容有关 - 这不是我的问题。

更新 2021/08/19

我认为可能不会导致此问题的是路线上活跃的 Cloudflare Worker。最初这只是根据存储在 KV 中的 url 执行 301 重定向。服务器更改后,我添加了一些代码来更新一些旧的 url 并确保使用了 https。当我删除 Worker 时,JavaScript 错误消失了。然后我将问题跟踪到我正在使用的 HTMLRewriter(代码如下)。我只是不确定为什么替换方法会导致问题?

class AttributeRewriter {
  constructor(attributeName) {
    this.attributeName = attributeName
  }

  element(element) {
    const attribute = element.getAttribute(this.attributeName)
    
    if (attribute) {
      let newValue = attribute.replace(new RegExp(blogOriginUrl, 'g'), blogPublicUrl).replace(new RegExp(csOriginUrl, 'g'), csPublicUrl).replace(new RegExp(httpUrl, 'g'), httpsUrl)

      element.setAttribute(this.attributeName, newValue)
    }
  }
}

const urlRewriter = new HTMLRewriter().on('a', new AttributeRewriter('href')).on('img', new AttributeRewriter('src')).on('img', new AttributeRewriter('srcset'))

问题是您的工作人员正在使用 HTMLRewriter 重写实际上不是 HTML 的资源。在本例中,它正在重写一个 JavaScript 文件。 HTMLRewriter 假设您给它的任何输入都是 HTML,并尝试这样解析它。在这里,它看到 <img> 标签出现在您的 JavaScript 中,它认为这是一个 HTML 标签。它已解析标签,然后以稍微不同的方式再次写出,这对 HTML 有效但对 JavaScript.

不正确

在您的 worker 中,您需要确保仅将 HTMLRewriter 应用于基于 Content-Type 实际上 HTML 的响应。喜欢:

if (response.headers.get("Content-Type").startsWith("text/html")) {
  // apply HTMLRewriter here
}