宝塔面板如何添加自定义错误页_配置404与500静态页面

酷墨小哥_8247

酷墨小哥_8247

2026-03-25

636人浏览

原创

宝塔面板中应通过「网站设置→错误页」功能配置自定义404.html和500.html,上传文件至网站根目录(如/www/wwwroot/example.com/error/404.html),权限设为644,并确保未被open_basedir限制或伪静态规则拦截;500页需php正常返回状态码且fastcgi_intercept_errors on生效。

宝塔面板如何添加自定义错误页_配置404与500静态页面

宝塔面板里怎么指定自定义 404.html 和 500.html 文件

直接在网站配置中设置,不依赖 .htaccess 或 Nginx 全局规则。宝塔的「网站」→「设置」→「配置文件」里改的是 Nginx 配置,但更稳妥的方式是用其内置的「错误页」功能——它会自动注入 location 块并优先匹配,避免手写规则出错。

操作路径:网站列表 → 点击对应站点「设置」→ 左侧菜单选「错误页」→ 开启「自定义错误页」→ 上传或填写 404.html、500.html 的绝对路径(如 /www/wwwroot/example.com/error/404.html)。

  • 文件必须放在网站根目录下或子目录中,且 Nginx 有读取权限(常见坑:上传后权限是 600,需手动改为 644)
  • 路径填相对路径(如 error/404.html)也可以,但宝塔实际会拼接到网站根目录,所以推荐写绝对路径,避免歧义
  • 不要把文件放在 /www/server/nginx/html/ 这类全局默认路径下——那是 Nginx 自带错误页位置,宝塔不会从那里读取你的自定义页

为什么改了配置却还是返回默认 404 页面

大概率是 Nginx 没重新加载,或者自定义页被其他 location 规则拦截了。宝塔的「错误页」开关虽然点开了,但底层仍靠 rewrite + error_page 指令生效,一旦你手动在「配置文件」里加过 error_page 404 /404.html 这类语句,就可能和宝塔自动生成的冲突。

  • 检查 Nginx 错误日志:/www/wwwlogs/example.com.error.log,看是否有 open() "/www/wwwroot/example.com/404.html" failed (2: No such file) 这类提示
  • 确认是否勾选了「启用防跨站攻击(open_basedir)」:如果开了,而你的错误页路径不在 open_basedir 白名单里,Nginx 会静默失败,回退到默认页
  • 禁用「网站伪静态」里的自定义规则,尤其含 try_files 的——它可能提前终止请求,让 error_page 根本没机会触发

500 错误页为啥经常不显示,反而报 “500 Internal Server Error” 纯文本

因为 500 是服务端执行出错(比如 PHP 崩溃、超时、内存溢出),Nginx 默认只在「能正常响应 headers」的前提下才返回自定义错误页。一旦后端彻底挂掉,Nginx 往往连错误页都读不到,只能吐原始错误。

  • error_page 500 生效的前提是:PHP-FPM 至少返回了 HTTP 状态码 500 + 完整 header,而不是直接断连
  • 确保 fastcgi_intercept_errors on; 已开启(宝塔默认开,但如果你改过配置文件,可能被删掉)
  • PHP 层面的致命错误(如 parse error)通常不走 Nginx error_page,而是由 PHP 自己输出;想统一兜底,得在 PHP 中设 set_error_handler + http_response_code(500)

静态错误页里怎么引用 CSS/JS/图片资源不 404

错误页本身是静态 HTML,但它的资源路径解析依赖当前 URL 路径,不是文件系统路径。比如用户访问 /a/b/c 时触发 404,浏览器会尝试从 /a/b/ 下找 style.css,而不是网站根目录。

  • 所有资源链接必须用绝对路径:以 / 开头,如 <link href="/css/style.css">,否则相对路径会错乱
  • 确认这些静态资源文件确实放在网站根目录对应位置,且权限为 644
  • 别在错误页里用 <script src="js/app.js"></script> 这种无前导斜杠的写法——它会在当前 URL 路径下解析,99% 情况下 404

真正麻烦的从来不是加一页 HTML,而是让这页在各种请求路径下都能正确加载资源、不暴露服务器信息、且不被 PHP 或缓存中间件干扰。调试时多看 Nginx error log,比反复刷新页面有用得多。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

10404

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

6121

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2115

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3848

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4554

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3571

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

5097

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

4002

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11962

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习