在 WordPress 更换主机后,只有首页能打开(比如访问内页或后台出现 404 错误),这通常是由于 固定链接设置 或 服务器伪静态规则配置不正确 导致的。下面是详细的排查和解决方法:
✅ 常见原因及解决方案
🔧 1. 刷新固定链接设置
这是最常见的问题原因。
操作步骤:
- 登录 WordPress 后台(如果可以访问首页)。
- 进入 设置 > 固定链接。
- 不需要修改任何内容,直接点击页面底部的 “保存更改” 按钮。
- 这会刷新
.htaccess文件或通知服务器更新重写规则。
- 这会刷新
⚠️ 如果无法进入后台,可以手动编辑
.htaccess文件,参考第3点。
🔁 2. 检查 Permalink 设置 是否为默认以外的格式
如果你使用的是自定义结构(如 /年/月/日/文章名),必须配合正确的服务器规则。
建议临时改为 “默认” 格式测试:
- 后台进入 设置 > 固定链接。
- 选择 “默认”(即
?p=123的形式)。 - 点击保存,然后尝试访问其他页面是否正常。
📄 3. 确保 .htaccess 文件存在且可读(Apache 服务器)
WordPress 使用 .htaccess 来实现伪静态链接。
操作步骤:
- 在网站根目录(与 wp-config.php 同级)检查是否存在
.htaccess文件。 - 如果没有,可以新建一个,并添加以下内容:
# BEGIN 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>
# END WordPress
⚠️ 注意权限:
.htaccess文件需要有正确的读取权限(通常为 644)。
🌀 4. 检查服务器是否启用 mod_rewrite 模块(Apache)
如果你用的是 Apache 服务器,确保开启了 mod_rewrite 模块。
如何检查?
- 联系主机商或查看 phpinfo() 页面中是否启用了
mod_rewrite。 - 如果是自己管理的 VPS,可以运行如下命令启用:
sudo a2enmod rewrite sudo systemctl restart apache2
🧃 5. Nginx 用户需配置伪静态规则
如果你迁移到了 Nginx 服务器,请确认你已经添加了 WordPress 的伪静态规则。
示例 Nginx 配置:
location / {
try_files $uri $uri/ /index.php?$args;
}
或者更完整的配置:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
修改完 Nginx 配置后记得重启服务:
sudo systemctl restart nginx
🗂 6. 检查文件权限
有时候权限设置错误也会导致某些页面无法访问。
推荐设置:
- 文件权限:644
- 目录权限:755
- wp-config.php:600(仅限所有者)
🧪 7. 禁用插件排除冲突
某些 SEO 插件(如 Yoast SEO、Rank Math)会影响固定链接行为。
操作方式:
- 通过 FTP 或文件管理器进入
wp-content/plugins/。 - 将整个
plugins文件夹重命名为plugins.deactivate。 - 再次访问页面,看是否恢复正常。
🔄 8. 重新同步数据库 URL(使用 Better Search Replace 插件)
迁移过程中可能出现旧域名未完全替换的问题。
推荐插件:
- Better Search Replace
- Velvet Blues Update URLs
- Duplicator / All-in-One WP Migration(迁移专用)
✅ 总结处理顺序(推荐流程):
- 刷新固定链接设置(保存一次即可)
- 检查并配置
.htaccess文件 - 检查服务器是否启用
mod_rewrite - Nginx 用户添加伪静态规则
- 检查文件权限
- 禁用插件测试
- 替换数据库中的旧域名
如果你提供更多细节(例如你是用 Apache 还是 Nginx、能否登录后台等),我可以给出更具体的指导。
需要我帮你写一份适用于你的服务器的伪静态规则吗?
云计算HECS