WordPress安装在子目录出现404错误的排查求助
WordPress 404 排查思路(自定义index.php正常加载场景)
既然你修改index.php后能正常输出内容,说明Apache和PHP的基础运行是没问题的,问题肯定出在WordPress的内部路由、文件结构或者配置上。下面是一步步的排查方向:
1. 确认WordPress核心文件完整性
解压过程中可能出现文件丢失或损坏,这会直接导致WP加载依赖文件失败:
- 如果安装了WP-CLI,直接运行:
wp core verify-checksums验证核心文件完整性 - 没有WP-CLI的话,重新下载对应版本的WordPress压缩包,解压后覆盖现有
/var/www/wordpress目录(记得备份wp-config.php和wp-content目录),确保所有核心文件都存在
2. 检查Apache重写规则与.htaccess配置
WordPress的伪静态路由完全依赖mod_rewrite和.htaccess,这是这类404问题的高发点:
- 先确认mod_rewrite模块已启用:
sudo a2enmod rewrite sudo systemctl restart apache2 - 检查
/var/www/wordpress/.htaccess文件是否存在,内容是否符合WP默认规则:BEGIN WordPressreturn (<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /wordpress/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wordpress/index.php [L] </IfModule> )END WordPress - 确保.htaccess的权限正确,Apache用户(通常是
www-data)能读取:sudo chown www-data:www-data /var/www/wordpress/.htaccess sudo chmod 644 /var/www/wordpress/.htaccess
3. 强制设置WordPress站点URL
如果WP数据库里的站点URL和实际访问地址不匹配,会导致内部跳转逻辑出错:
- 打开
/var/www/wordpress/wp-config.php,在/* That's all, stop editing! Happy publishing. */之前添加:define('WP_HOME','http://www.example.com/wordpress'); define('WP_SITEURL','http://www.example.com/wordpress'); - 保存后刷新页面,看是否解决问题
4. 修复文件与目录权限错误
WP对文件权限有严格要求,权限不正确会导致无法加载内部文件:
- 统一设置目录权限为755,文件权限为644:
sudo find /var/www/wordpress -type d -exec chmod 755 {} \; sudo find /var/www/wordpress -type f -exec chmod 644 {} \; - 确保所有文件属于Apache用户:
sudo chown -R www-data:www-data /var/www/wordpress - 单独给上传目录设置可写权限:
sudo chmod -R 775 /var/www/wordpress/wp-content/uploads
5. 排查PHP错误日志(可能被忽略了)
虽然你说日志没记录,但PHP的错误日志可能和Apache日志不在同一个路径:
- 找到你的PHP配置文件(比如
/etc/php/7.4/apache2/php.ini,版本号根据实际情况调整),修改以下参数:display_errors = On log_errors = On error_log = /var/log/php/error.log - 重启Apache后再次访问页面,查看PHP错误日志是否有致命错误记录,这能直接定位到哪个文件加载失败
6. 检查Apache站点配置的AllowOverride设置
如果Apache的目录配置里AllowOverride不是All,.htaccess的规则不会生效:
- 打开你的Apache站点配置文件(比如
/etc/apache2/sites-available/000-default.conf),找到对应/var/www/wordpress的目录块,修改为:<Directory /var/www/wordpress> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> - 重启Apache:
sudo systemctl restart apache2
7. 排除插件/主题干扰
第三方插件或主题的代码可能破坏WP的路由逻辑:
- 重命名
/var/www/wordpress/wp-content/plugins为plugins-disabled,禁用所有插件 - 重命名当前使用的主题目录(比如
/var/www/wordpress/wp-content/themes/your-theme为your-theme-disabled),切换到默认主题 - 刷新页面看是否恢复正常,如果正常,再逐个恢复插件/主题排查问题
内容的提问来源于stack exchange,提问作者kristina
相关产品推荐
相关产品推荐

