宝塔默认文档按列表顺序查找首个存在的文件作为首页,需确认文件真实存在、调整顺序、清除缓存;支持自定义首页名但须手动添加;伪静态可能劫持请求,需检查rewrite规则;多站点时IP访问由default_server配置决定。

默认文档顺序决定首页加载逻辑
宝塔不是靠“首页文件名”硬编码识别首页,而是按 默认文档 列表从上到下依次查找——第一个存在的文件就是实际打开的首页。比如列表是 index.html、index.php、default.html,而你的网站根目录只有 index.php 和 default.html,那最终加载的是 index.php,不是因为名字更“标准”,只因它排在前面且存在。
- 进入站点设置 → 左侧点击
默认文档,直接拖拽调整顺序即可生效 - 别只加文件名,要确认该文件真实存在于网站根目录(如
/www/wwwroot/your-site/index.html) - 如果改完顺序仍不生效,大概率是浏览器缓存或 CDN 缓存了 301 跳转,用隐身窗口或
curl -I 域名查 HTTP 状态码验证
添加自定义首页文件(比如 1.html 或 home.php)
你完全可以用非传统名称做首页,比如把 1.html 设为默认,但必须显式添加进 默认文档 列表,否则宝塔不会主动找它。这个操作本身无风险,但要注意:一旦添加,它就参与从左到右的匹配流程,位置太靠前可能意外覆盖掉本该执行的 index.php(比如 Laravel 或 WordPress 入口)。
- 在
默认文档页面底部输入框填入1.html,点添加 - 拖到最顶端,才能确保优先级最高
- 若同时存在
index.php和1.html,且1.html在前,访问域名将直接返回1.html的内容,index.php不会运行
伪静态规则可能悄悄劫持首页请求
很多 CMS(如 Typecho、WordPress)或框架(如 ThinkPHP)启用了伪静态后,Nginx/Apache 会把所有请求重写到入口文件(如 index.php)。这时候即使你把 index.html 拖到第一位,实际访问仍走 PHP 路由——因为请求根本没落到静态文件匹配阶段,早在 rewrite 规则里就被拦截了。
- 临时关闭伪静态(站点设置 →
伪静态→ 选纯静态),测试是否能正确加载index.html - 如果关闭后正常,说明问题出在 rewrite 规则对
/的处理逻辑,需检查规则中是否有类似try_files $uri $uri/ /index.php?$args;这类兜底语句 - 不要盲目删规则,应针对性补充例外:例如在 Nginx 配置中加
location = / { try_files /index.html /index.php; }
多个站点共存时,默认站点行为易被忽略
当服务器绑定了多个域名,但用户直接访问 IP 或未匹配域名时,Nginx 会启用“默认 server”。这个默认行为不由单个站点的 默认文档 控制,而是由虚拟主机配置文件的 default_server 标志和文件加载顺序决定。很多人调好了某个站点的首页,却在浏览器输 IP 时看到宝塔默认页或 403,就是这个原因。
- 想让某个站点响应 IP 访问?添加新站点时,域名栏留空或填
0.0.0.0,并确保其配置文件名以0_开头(如0_default.conf) - 检查
/www/server/panel/vhost/nginx/下文件排序,Nginx 按字母序读取,0_开头的会最先加载 - 已有站点想设为默认?不建议手动改
listen 80 default_server,容易和宝塔自动管理冲突;优先用“留空域名 + 文件名前置”方式
真正麻烦的不是设哪个文件是首页,而是搞清请求到底经过了哪一层:DNS 解析 → Nginx server 匹配 → location 路由 → 默认文档查找。漏掉任意一环,页面就可能和你预期的完全不同。










