WordPress固定链接出现404错误

发布于 2022-12-31  131 次阅读


这是在建站初期碰到的一个小问题,很奇怪但是网上没人说这个事儿。折腾了半天总算是解决了这个问题。作为处女座强迫症,网址名字一定要越短越好。

我使用了根域名解析,甩掉了WWW的前缀,网址短了一些。

WordPress在你发布文章时会根据默认设置定固定一个网址,通常这个固定链接包含了年月日和文章ID。

WordPress让您能够为您的固定链接和归档建立自定义URL结构。自定义URL结构可以为您的链接提高美感、可用性和前向兼容性。

很显然,这么长的网址对于强迫症是不可接受的。

我需要把网址固定链接为Domain.com/id,越短越好,有利于高效的交流。

进入WordPress后台 ,设置-固定链接,选择自定义结构,只选择%post_id%。

之后保存,打开首页,正常。打开随意一个页面,Nginx 404。

并且仪表盘-站点健康状态出现了:

当测试 rest api 时返回了预期之外的结果: rest api 响应: (404) not found。

解决办法:选择自定义结构在想要的固定链接格式前加/index.php。

例如上图的%post_id%改成/index.php/%post_id%。

这样虽然到达效果,但是前面会加多个index.php。很显然不可接受。

后来仔细琢磨了一下,是伪静态的问题。

我使用的是宝塔+Nginx的配置,在宝塔中选择你的网站,选择伪静态。

如果你的WordPress安装在网站根目录(大多数),那么直接复制:

location / {
if (!-e $request_filename) {
rewrite (.*) /index.php;}}

如果你的WordPress安装在网站二级目录(少数),那么直接复制:

location /blog/ {
if (!-e $request_filename) {
rewrite (.*) /blog/index.php;}}

其中blog是你网站的路径,在blog文件夹下有WordPress的index.php。

保存后网站恢复正常。

这个办法也适用于宝塔恢复站点后,首页正常,二级域名全部Nginx 404 的情况。

希望这个教程可以帮到你,毕竟没解决之前我是直接清空了数据重做了整个网站。