【问题标题】:WordPress warning: preg_match(): Compilation failed: nothing to repeat at offset 1WordPress 警告:preg_match():编译失败:在偏移量 1 处没有可重复的内容
【发布时间】:2018-06-18 21:25:11
【问题描述】:

突然,我朋友的基于 WordPress 的网站开始在子页面上显示此警告:

警告:preg_match():编译失败:在偏移处没有可重复的内容 1 在 /wp-includes/class-wp.php 第 218 行

警告中返回的第 218/219 行如下:

if ( preg_match("#^$match#", $request_match, $matches) ||
     preg_match("#^$match#", urldecode($request_match), $matches) ) {

似乎代码负责重新处理 URL。

有什么想法可能会出错吗?

【问题讨论】:

  • 应该是"#^" . preg_quote($match, "#") . "#"
  • @WiktorStribiżew 它实际上停止显示警告,但也弹出“找不到页面”
  • $match 包含什么?
  • @revo ?p=15538-2(?:/([0-9]+))?/?$
  • 您最近是否更改了永久链接结构?

标签: regex wordpress preg-match


【解决方案1】:

错误不会出现在主页上,而是出现在子页面上。因此,我猜永久链接结构已损坏。一个经常被建议的修复是这样的:

  1. 暂时禁用所有插件!不要跳过这一步。
  2. 转到 WordPress 管理仪表板:设置 -> 永久链接 请注意您在其他地方的自定义永久链接字段中的内容
  3. 临时切换到默认永久链接。保存设置。
  4. 检查有问题的页面:preg_match 错误消失了吗?
  5. 切换回您之前的自定义永久链接设置
  6. 重新启用所有插件,页面应该恢复正常。

【讨论】:

  • 这让我终于找到了答案!谢谢!正如您所说,问题出在损坏的永久链接结构中,自定义结构/$postname 应该这样写:/$postname$/。我将保留您的答案作为最重要的答案,而不是发布针对我的特定问题的实际解决方案,因为实际上是您提供的调试方法使我得出了结论。谢谢!
【解决方案2】:

我也遇到了同样的问题,这让我发疯了!

这对我来说是一个简单的解决方法,希望其他有同样问题的人也能解决!

我所要做的就是使用 /wp-admin 登录到站点的后端,然后转到设置 > 永久链接,然后将其设置为“帖子名称”,然后单击“保存更改”。硬刷新您遇到问题的页面,它可能刚刚得到解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 2014-11-24
    • 1970-01-01
    • 2022-11-22
    相关资源
    最近更新 更多