一、问题现象
最近新创建了一个 wordpress 站点,按常规优化调整了一番,在发布一篇测试文章时,提示"发布失败,此响应不是合法的 JSON 响应。",见下图1:
P1.wordpress 发布文章提示失败,响应不是合法的 JSON 响应
二、问题原因
在给 wordpress 做常规优化时,为了对搜索引擎友好,调整了固定链接格式。默认链接格式为"https://www.puretool.cn/index.php/[year]/[month]/[day]/[title]",调整为"https://www.puretool.cn/[category]/[title].html"。
nginx 默认配置中的路径依赖于index.php,会尝试将所有请求的根路径或默认文件解析为 index.php,而经过调整优化后的固定链接中又没有"index.php",所以出现上述异常。
三、解决办法
调整 nginx 伪静态相关配置即可解决该问题。在伪静态配置项中添加如下代码:
location / {
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}