无域名仅IP地址的WordPress站点迁移后二级页面404错误修复咨询
嘿,我碰到过好几次这种仅用IP访问WordPress导致非首页404的情况,更新固定链接没用大概率是因为IP访问的特殊性和服务器rewrite配置没跟上,给你整理了一套一步步排查修复的方案:
1. 先确认Web服务器的Rewrite模块是否启用
WordPress的固定链接依赖服务器的URL重写功能,这是基础中的基础:
Apache环境:
先执行命令启用mod_rewrite模块:sudo a2enmod rewrite然后重启Apache服务:
sudo systemctl restart apache2接着检查WordPress根目录下的
.htaccess文件,确保它权限设置为644,并且包含WordPress默认的重写规则:# 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不存在,直接新建一个文件把上面的规则粘贴进去就行。Nginx环境:
打开你的站点配置文件(一般在/etc/nginx/sites-available/目录下),在server块里添加以下重写规则:location / { try_files $uri $uri/ /index.php?$args; }保存后重启Nginx:
sudo systemctl restart nginx
2. 强制WordPress使用IP作为站点URL
因为你是用IP访问,WordPress可能还在沿用旧的域名配置,导致链接生成错误:
方法一:修改wp-config.php
打开WordPress根目录的wp-config.php,在/* That's all, stop editing! Happy publishing. */这一行之前添加:define('WP_HOME','http://你的服务器IP'); define('WP_SITEURL','http://你的服务器IP');把
你的服务器IP替换成实际的IP地址,这样就能强制WordPress用IP生成所有链接。方法二:后台修改(如果能登录的话)
要是你能正常进WordPress后台,直接去设置→常规,把「WordPress地址(URL)」和「站点地址(URL)」都改成你的服务器IP,保存后再去设置→固定链接,随便选一个选项重新保存一次(不用改选项,点保存就行)。
3. 清空所有缓存
缓存很可能会让旧的链接规则“赖着不走”,这一步别忘:
- 如果你装了缓存插件,先在后台清空插件缓存;
- 手动删除WordPress根目录下
wp-content/cache文件夹(如果有的话); - 清空浏览器缓存和Cookie,或者用无痕模式测试页面。
4. 检查服务器防火墙/安全组
确保服务器的80(HTTP)或443(HTTPS)端口是开放的,没有防火墙规则拦截非首页的请求。另外,有些服务器的安全模块(比如ModSecurity)可能会误判URL请求,你可以暂时关闭它测试一下,如果关闭后正常,再去调整安全规则避免误拦截。
5. 测试朴素模式固定链接
如果上面的步骤都试过还是不行,先把固定链接改成「朴素」模式(就是带?p=文章ID那种),看看其他页面能不能访问:
- 如果能访问,说明问题还是出在rewrite规则或服务器配置上,回头再仔细检查Apache/Nginx的重写设置;
- 如果还是404,那可能是文件权限有问题,确保
wp-content、wp-includes等文件夹权限设置为755,文件权限为644。
内容的提问来源于stack exchange,提问作者user1584043

