由于wordpress博客站点刚开始使用的时候忘记更改固定链接,使用的是默认的朴素固定连接 https://www.hello2099.com/?p=123 ,这样显示的链接有特殊字符,看起来不怎么美观。后来知道了固定链接的格式对SEO的好处,同时为了链接美观,决定更改固定链接格式。最后改成了https://www.hello2099.com/%post_id%.html

结果可想而知,肯定是站内所有文章都出现 404 错误。

那么这个问题该如何解决呢?网上有文章说可以用插件,但是我不喜欢用插件,最后从 osetc博客 等多个博文中找到了满意解决方案,并且一次成功,我在此分享出来。

首先我们应该更改网站域名所对应的配置文件,有的是 /etc/nginx/conf/yoursite.conf,我的网站没有建单独conf文件,我这里直接修改/etc/nginx/nginx.conf

我的默认的配置文件如下:

server {  
    listen       80;  
    server_name  www.chaichunyan.com;  
    access_log  /var/log/nginx/access.log  main;  
location / {  
        root /www/data/xxx;  
        index  index.php index.html index.htm;  
        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;  
         }  
}  
rewrite /wp-admin$ $scheme://$host$uri/ permanent;  
  
    location  ~ \.php$ {  
        root /www/data/xxx;  
        fastcgi_pass   127.0.0.1:9000;  
        fastcgi_index  index.php;  
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  
        include        fastcgi_params;  
    }  
}  

方法一:

需要将下面几行if代码copy到server{ } 字段中。

需要添加的代码:

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;
}

添加完成后保存退出,重启nginx。

方法二:

在location / 字段修改添加以下代码:

location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

添加完成后保存退出,重启nginx。

再次访问你的网站,发现所有文章都可以正常访问了。

发表回复

您的电子邮箱地址不会被公开。