打开首页、登录页或后台,浏览器给出的不是空白页,也不是 502/503 网关页,而是直接返回 500 Internal Server Error ;有的环境整站都打不开,有的只在改完固定链接、装完插件或改完伪静态规则之后才出现。团队第一反应常常是重装 WordPress、切换 PHP 版本,或先清整站缓存。这和近期已发的 白屏或网站遇到了致命错误 、前台打开报 502/503 、打开站点却直接下载文件或源码而不显示页面 、打开就提示建立数据库连接时出错 、Allowed memory size exhausted 、一直显示「简短维护」 、ERR_TOO_MANY_REDIRECTS 、无法创建目录或媒体库上传失败 不是一类故障 。「白屏 / 致命错误」通常还能看到 WordPress 恢复模式入口,debug.log 里是主题或插件的 PHP 致命错误,页面往往是空白而不是 Web 服务器给出的 500 页;「502/503」卡的是 PHP-FPM 没及时响应或上游超时,网关回的是坏网关或服务不可用;「打开站点却直接下载文件」是请求没有交给 PHP,浏览器开始保存 index.php 或源码;「建立数据库连接时出错」说明 PHP 已经跑起来,只是连不上库;「内存耗尽」会在日志里明确写出 Allowed memory size exhausted;「简短维护」是更新中断留下了 .maintenance;「重定向次数过多」是站点地址和强制 HTTPS 打架;「无法创建目录 / 媒体库上传失败」是写权限或上传体积上限。本文前提相反:Web 服务器已经用 500 把这次请求挡下来,页面上看到的是服务器错误,而不是 WordPress 自己的白屏或恢复模式提示------角度是先核伪静态规则和文件权限,再查服务器错误日志里有没有没被恢复模式接住的 PHP 致命错误,而不是先覆盖程序文件或叠缓存插件。
更稳的顺序是:先分清是 Apache 的 .htaccess 或伪静态规则写坏 、还是 Nginx 的 try_files / rewrite 配错 、还是 关键文件权限或所有者不对 、还是 PHP 致命错误只出现在服务器日志里 → 先看状态码、错误页是谁输出的、以及这次 500 是在改哪一项配置之后出现的 → 再改规则或权限,而不是同时重装程序、切换 PHP 版本、又把整份站点配置覆盖掉。本篇未取得可核验的百度指数或微信指数实时数值,也不用这类数字判断该不该先改伪静态。
适用场景
本文适用于:WordPress 独立站打开前台、登录页或 wp-admin 时,浏览器直接显示 500 Internal Server Error,或整页只有服务器默认的 500 提示;常见于刚保存固定链接、刚改 .htaccess / Nginx 规则、刚迁机、刚调整目录权限,或刚启用某个必须写规则的安全/缓存插件。有时只有后台报 500,前台还能打开;有时 HTTP 和 HTTPS 都是 500。不适用于:页面空白、能进恢复模式或 debug.log 里已有明确的主题/插件致命错误(按白屏 / 致命错误专题收口);前台打开报 502/503 或网关超时(按 PHP-FPM 那篇收口);打开站点却直接下载文件或源码(按 PHP 处理规则与 443 那篇收口);提示建立数据库连接时出错(按连库那篇收口);内存耗尽、简短维护、重定向循环、无法创建目录或媒体库上传失败(按各自专题收口)。那些按各自专题处理,别和「服务器返回了 500,要先核伪静态、权限和错误日志」混改。
先分清:伪静态规则写坏 vs 文件权限不对 vs PHP 致命错误没进恢复模式 vs 规则被插件改乱
常见落在四条线上:
- Apache 伪静态或
.htaccess语法错误 :刚保存固定链接、手工改过重写规则,或安全/缓存插件往.htaccess写入了不完整的片段,Apache 会直接对整个站点回 500,PHP 甚至还没开始执行。 - Nginx 的
try_files、rewrite 或location配错 :请求没有按预期交给 PHP,或被错误的location接住后内部跳转失败,Nginx 以 500 结束。这和「直接下载未解析的 PHP」不同:下载是 handler 没接上,这里是规则执行失败。 - 关键文件权限或所有者不对 :Web 运行用户读不了
wp-config.php、.htaccess或站点目录,或权限被改得过严,服务器在打开文件阶段就失败并返回 500。 - PHP 致命错误没有进入 WordPress 恢复模式 :扩展缺失、语法错误发生在引导早期,或
display_errors/ 恢复模式未生效,浏览器只看到 Web 服务器包装出来的 500,真正原因写在 PHP-FPM 或站点错误日志里,而不是后台那封恢复邮件。
先记下:500 出现在前台、后台还是两边都有;是改固定链接、改伪静态、改权限还是装插件之后才出现;错误页长得像 Nginx、Apache 还是 PHP 默认页。明确这是 Web 服务器返回了 500,不是白屏,也不是 502/503。

第一步:先核错误页和日志是谁给出的------别先重装 WordPress
不要先在生产上重装 WordPress 或切换 PHP 版本,也不要先叠加缓存或「一键修复」插件。先确认这一次 500 是在哪一层被返回的:
- 先看状态码和错误页来源:在开发者工具的网络面板里打开出问题的 URL,确认状态码确实是 500,而不是 502、503、403 或 404。再看页面文案和页脚:是 Nginx 默认 500、Apache 默认 500,还是 PHP 自己的 Fatal error 页。状态码和页脚能帮你判断该先看 Web 服务器配置,还是先看 PHP 日志。
- 对照这次变更发生在哪一步 :如果刚保存过固定链接、刚编辑
.htaccess或 Nginx 配置、刚用面板「一键伪静态」,优先查重写规则。如果刚chmod、迁机或用 root 解压过文件,优先查所有者和权限。如果刚启用插件或改了wp-config.php,再去翻错误日志里的 PHP 致命错误。 - 同时抽检前台首页、登录页和后台 :只有
wp-admin报 500、前台正常,更像是后台专用插件、内存或早期引导错误;整站都是 500,更像是伪静态或全站权限问题。不要只测一个 URL 就下结论。 - 和「白屏或网站遇到了致命错误」区分 :那种常见是空白页或 WordPress 恢复模式提示,
debug.log里能直接看到插件/主题堆栈。本文如果浏览器已经明确写出 500 Internal Server Error,而且没有恢复模式入口,先不要只在后台停插件,先看服务器错误日志和伪静态。 - 和「前台打开报 502/503」区分:502/503 是网关等 PHP-FPM 超时或进程没起来,错误页通常写的是 Bad Gateway 或 Service Temporarily Unavailable。本文状态码是 500,先别去改进程数或上游超时。
- 先不要在生产上同时重置
.htaccess、重写 Nginx、把目录权限改成 777 再重装程序。改规则或权限前先留下可回滚备份,在预发或维护窗口对照,以免把还能打开的页面打挂。
预期:能口头说清「状态码确实是 500,错误页像哪一种服务器,它是在改伪静态、权限还是插件之后出现的,前台和后台是否一致」;还没有在生产上重装 WordPress 或覆盖整份配置。
第二步:先修伪静态和文件权限,再读错误日志里的致命错误
范围已经看清,再按优先级改:
- Apache 环境先核
.htaccess和重写模块 :把当前.htaccess复制一份备份,再对照 WordPress 官方默认规则看是否缺行、多行或出现截断。若刚保存固定链接后全站 500,可在维护窗口先换成默认规则,确认mod_rewrite已启用,再重新保存固定链接,让 WordPress 自己写回规则。不要在生产里反复手工拼片段。 - Nginx 环境先核
try_files与 PHP 的location:常见是伪静态规则复制错环境、try_files $uri $uri/ /index.php?$args写成了错误回环,或 PHP 的location ~ \.php$被另一个正则抢先匹配。改完后先nginx -t再重载。这和「打开站点却直接下载文件」要分清:下载是请求没交给 PHP,500 是规则执行失败或内部跳转出错。 - 再核目录和关键文件的所有者、权限 :站点文件应由 Web 运行用户可读,
wp-config.php不要对无关用户开放写权限,也不要为了「先能打开」把目录改成 777。迁机或用 root 解压后,常见是所有者还停在 root,Web 用户读配置失败就会 500。权限只收到「Web 用户能读、能写 uploads」,不要扩大到全站任意可写。 - 定界时对照清单,避免只在生产里盲改 :涉及打开页面直接报 500 时,可对照 WordPress 报 500 时的伪静态、权限与错误日志核对 先分清是「
.htaccess或 Nginx 伪静态规则写坏」,还是「文件权限或所有者不对」,还是「PHP 致命错误只出现在服务器错误日志里、没有进入恢复模式」,再决定先重置规则还是先修权限,避免一上来重装 WordPress 或把目录改成 777,也避免把 502/503、白屏致命错误或「打开站点却直接下载文件」当成这篇来改。 - 规则和权限恢复后若仍是 500,再读错误日志:查看 Nginx / Apache 的 error log,以及 PHP-FPM 或主机面板里的 PHP 错误日志,定位是语法错误、缺失扩展、还是引导早期的致命错误。能在日志里对上文件和行号后,再在预发停用对应插件或回退最近一次代码变更。不要在还没读日志时就批量关闭所有插件。
预期:伪静态规则可被当前 Web 服务器解析;关键文件所有者正确且权限不过宽;若仍有 500,错误日志里能指出具体文件,而不是只有一句笼统的 Internal Server Error。

配置注意与回滚
- 一次先改一处并留下记录 :先对上错误页和变更时间点,再改
.htaccess、Nginx 规则或权限。不要同一天里重置伪静态、chmod 全站、切换 PHP 版本又重装 WordPress。 - 改伪静态不要丢掉可回滚副本 :替换
.htaccess或 Nginx 配置前先复制当前文件,重载后同时抽检首页、一篇内页、登录页和后台。 - 不要用 777 或把
wp-config.php改成人人可写来「先换通」:权限过宽会留下后续风险,也不是 500 的正确修法。 - 生产警告 :不要在无备份的情况下直接改生产环境的伪静态或目录权限并重载;改
try_files、.htaccess或文件所有者应有可回滚副本,尽量选维护窗口。排障时不要打开目录浏览,也不要把错误日志全文发到公网。 - 测试对比要用同一 URL、清掉自己这边的缓存层:以源站、未登录无痕窗口为准,不要把 CDN 里缓存的 500 页当成修复失败,也不要把缓存里的旧 200 当成已经修好。
验证
- 未登录无痕窗口打开首页、一篇内页和登录页:不应再出现 500 Internal Server Error,页面应正常渲染或进入登录表单。
- 再登录抽检后台 :
wp-admin、插件页和编辑器能打开;如果只有后台曾报 500,要确认这一侧也已经恢复。 - 再看一次状态码和错误日志:同一条 URL 的状态码不再是 500;刚才对应的错误日志在重复访问时不再新增同一条致命错误。DEVDIY 在 WordPress 外贸站验收里,通常把「状态码不再是 500」「伪静态规则可被当前服务器解析」「关键文件所有者与权限正确」「错误日志能对应到具体文件且不再刷同一条」「前台与后台都能打开」放在同一张表里看------缺一项都不算这轮「打开页面不再报 500」。
- 源站和经过 CDN / WAF 的域名都要看一眼:只修了源站、边缘节点仍缓存着旧的 500 页,访客看到的还是错误。必要时清掉这一条 URL 的错误缓存后再验。
- 和相邻故障对得上号 :若页面其实是 502/503,转到 PHP-FPM 专题;若是白屏或能进恢复模式,转到致命错误专题;若开始下载
index.php或源码,转到 PHP 处理规则专题;若已经能渲染但提示建立数据库连接时出错,转到连库专题。
验收口诀:打开就报 500 ≠ 程序文件丢了 → 先看错误页是谁输出的、这次改了什么 → 再核伪静态规则与文件权限 → 最后读错误日志里的 PHP 致命错误 → 不要靠重装或 777 来掩盖规则和权限问题。只看到「PHP 是绿的」还要确认规则没有在 Web 服务器层就把请求打成 500;只看到「固定链接已保存」还要确认当前环境的伪静态语法真的能被解析。
常见坑
- 保存固定链接后没核对
.htaccess是否被写坏,或 Nginx 根本不读.htaccess,却一直在改这份文件。 - 从 Apache 规则直接粘到 Nginx,或
try_files写成内部回环,一重载就全站 500。 - 迁机后文件所有者还是 root,Web 用户读不了
wp-config.php。 - 为了先打开把目录改成 777,或把配置文件改成任意可写。
- 还没读服务器错误日志,就重装 WordPress、切换 PHP 版本或一次性停掉所有插件。
- 把本文和「白屏致命错误」「502/503」「打开站点却直接下载文件」「建立数据库连接时出错」混改。