解决WordPress更改固定链接后404的问题

前由

WordPress 网站建设中,固定链接设置是必不可少的,好的固定链接更美观、易用、利于用户分享和搜索引擎收录,需要注意的是,要使设置的固定链接生效的前提是你的网站环境支持伪静态。

默认设置使用的是朴素固定链接方式?p=123,所以我们可以自定义设置自己的想要的固定链接,比如自定义连接结构为:/%post_id%.html。但是往往我们发现更改为其他固定链接方式后,打开发布的文章出现404错误,这是网站的伪静态出了问题。 下面是在不同环境下的不同解决方法。

1. nginx

如果使用宝塔建站那么就简单许多,打开网站设置,写入伪静态规则保存即可。

image-20240321111604173

bt环境

如果是其他环境,找到网站的 nginx.conf ,例如 /usr/local/nginx/conf/vhost/huahai.club.conf ,在 server 的大括号内添加上面代码并保存即可。记得重启 nginx 使之生效。

2.apache

建立 .htaccess文件,写入以下代码,放在 wordpress 根目录。

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>

3.IIS

在网站根目录建立一个 httpd.ini 文件,写入以下代码。

[ISAPI_Rewrite] # Defend your computer from some worm attacks #RewriteRule .*(?:global.asa|default.ida|root.exe|..).* . [F,I,O] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 # Protect httpd.ini and httpd.parse.errors files # from accessing through HTTP # Rules to ensure that normal content gets through RewriteRule /tag/(.*) /index.php?tag=$1 RewriteRule /software-files/(.*) /software-files/$1 [L] RewriteRule /images/(.*) /images/$1 [L] RewriteRule /sitemap.xml /sitemap.xml [L] RewriteRule /favicon.ico /favicon.ico [L] # For file-based wordpress content (i.e. theme), admin, etc. RewriteRule /wp-(.*) /wp-$1 [L] # For normal wordpress content, via index.php RewriteRule ^/$ /index.php [L] RewriteRule /(.*) /index.php/$1 [L]