WordPress迁移后permalinks异常:前台链接空白、后台操作失效
老兄,你遇到的这几个问题都是WP迁移后典型的环境适配问题,核心是重写规则没生效、PHP配置或者系统缓存的锅,我给你一步步捋清楚解决方案:
一、搞定无末尾斜杠的链接访问问题
不带斜杠的URL空白,本质是服务器没把这些请求正确转发给WP处理,得先把重写规则弄对:
手动修复
.htaccess(Apache服务器)
先确认你的Apache开了mod_rewrite模块,然后在网站根目录创建/修改.htaccess,把下面的内容丢进去:# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 自动给不带斜杠的URL加斜杠(双向兼容,用户输啥都能进) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ $1/ [L,R=301] # WP原生重写规则,确保所有请求都走WP路由 RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress这段规则会自动把不带斜杠的链接301跳转到带斜杠的版本,同时保证WP能正确解析所有请求。
Nginx服务器的配置调整
如果用的是Nginx,在你的站点配置文件里加这段:location / { try_files $uri $uri/ /index.php?$args; # 可选:强制跳转带斜杠,实现双向兼容 if (!-e $request_filename) { rewrite ^(.*[^/])$ $1/ permanent; } }改完后记得重启Nginx生效。
检查文件权限
.htaccess权限设成644,网站目录权限设为755,不然服务器读不到规则也是白搭。
二、解决后台操作和保存permalinks的空白问题
后台空白大概率是PHP报错、内存不够或者重写规则没写入成功,按下面的步骤排查:
开调试模式看具体错误
直接猜不如看报错,打开wp-config.php,加这几行代码:define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', true);然后去触发那些空白的操作(比如保存permalinks、删内容),要么页面会显示具体错误,要么去
wp-content/debug.log里看,一下子就能知道是内存不够还是插件冲突。加PHP内存限制
很多后台空白都是内存不够闹的,在wp-config.php里加:define('WP_MEMORY_LIMIT', '256M');如果还不行,就去改服务器的
php.ini,把memory_limit改成256M以上。重置固定链接规则
迁移后WP的重写规则可能没更新,哪怕你之前设置的是/%postname%/,也得重新触发一下:
登录后台→「设置」→「固定链接」,啥都不用改,直接点「保存更改」,这会让WP重新生成正确的重写规则到.htaccess。(要是之前点保存空白,先把前面的.htaccess和内存设置弄好再试)排查插件/主题冲突
迁移后有些插件可能和新服务器环境不兼容:- 先禁用所有插件,测试后台操作正常不,正常的话再一个个启用,找出搞事情的插件。
- 切换到WP默认主题(比如Twenty Twenty-Four),看看是不是主题的锅。
三、额外要注意的点
- 新服务器的PHP版本得符合WP要求,至少7.4以上,最好8.0+,版本太低容易出各种奇怪问题。
- 迁移后数据库里的
siteurl和home字段是不是新域名?要是不对,直接在wp-config.php里强制设置:define('WP_HOME','https://example.com'); define('WP_SITEURL','https://example.com');
按上面的步骤来,应该能把所有问题都解决掉。
内容的提问来源于stack exchange,提问作者CristianC

