You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 WordPress
    return (<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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:51:33