宝塔面板修改网站默认首页顺序_index.php与index.html优先级配置详解
宝塔面板创建网站后,默认文档顺序是index.html在前、index.php在后,这导致很多PHP网站安装后访问域名显示的是静态默认页而不是网站程序。本文详细讲解默认首页顺序的配置原理、不同程序的推荐顺序、以及常见问题排查。
默认文档(Default Document)是Web服务器在访问目录路径(不带文件名)时,自动查找并返回的文件列表。比如访问`https://域名/`,服务器不知道你要打开哪个文件,就按默认文档列表的顺序,依次检查根目录下是否存在这些文件,找到第一个存在的就返回。
Nginx的默认文档由`index`指令控制,宝塔面板默认配置是: ``` index index.html index.htm index.php default.html default.htm default.php; ``` 这个顺序的含义是:优先找index.html,找不到找index.htm,再找不到找index.php,以此类推。
为什么这个顺序对PHP网站有问题?因为宝塔创建站点时会自动在根目录生成一个`index.html`文件(内容是"恭喜,站点创建成功!"),当你上传了PHP网站程序(有index.php),根目录下同时有index.html和index.php,按默认顺序index.html在前,所以访问域名显示的是宝塔默认页,不是PHP网站。
正确的配置方法:
第一步:删除宝塔默认index.html。 在宝塔"文件"里进入站点根目录(`/www/wwwroot/域名/`),找到`index.html`,删除。这个文件是宝塔的默认欢迎页,不是网站程序的一部分,删掉不影响。
第二步:调整默认文档顺序。 在宝塔"网站"-对应站点-"设置"-"默认文档",把输入框里的顺序改成: ``` index.php index.html index.htm default.php default.html default.htm ``` 把index.php移到第一位。点击保存,Nginx自动重载。
这样配置后,访问域名时Nginx先找index.php,找到就执行PHP程序,找不到才找index.html。
不同网站程序的推荐默认文档顺序:
1. PbootCMS、WordPress、Discuz、ECShop等PHP程序: ``` index.php index.html index.htm ``` index.php必须在第一位。
2. 纯静态HTML网站(只有.html文件): ``` index.html index.htm ``` 不需要index.php,保持默认就行。
3. ThinkPHP、Laravel等PHP框架(入口文件在public目录): 网站根目录指向public子目录,默认文档: ``` index.php index.html ``` 同时需要配置pathinfo和伪静态,在"伪静态"里选对应框架的规则。
4. 混合网站(既有PHP又有静态HTML): 根据首页是PHP还是静态决定。首页是PHP就index.php在前,首页是静态就index.html在前。
5. 单页应用(Vue、React打包后的dist): ``` index.html ``` 只有一个index.html,所有路由由前端JS处理,需要配置伪静态把所有请求指向index.html。
修改默认文档的三种方式:
方式一:宝塔面板可视化修改(推荐,新手用)。 "网站"-站点-"设置"-"默认文档",输入框里按顺序填,空格分隔,保存。
方式二:直接修改Nginx配置文件。 "网站"-站点-"设置"-"配置修改",找到`index`指令那一行,修改顺序: ``` index index.php index.html index.htm; ``` 保存,Nginx自动重载。这种方式适合需要同时修改其他Nginx配置的场景。
方式三:命令行修改。 SSH登录服务器,编辑站点配置文件: ```bash vim /www/server/panel/vhost/nginx/域名.conf ``` 找到`index`行修改,保存后重载Nginx: ```bash nginx -s reload ```
常见问题排查:
问题1:改了默认文档顺序还是显示宝塔默认页。 - 检查根目录下的index.html是否删除了,没删除的话即使index.php在前,如果index.php不存在或报错,会 fallback 到index.html - 确认index.php文件确实在根目录下,不是在子目录(比如有些程序解压后多了一层目录) - 清浏览器缓存,Ctrl+F5强制刷新 - 重启Nginx:宝塔"软件商店"-Nginx-"重启"
问题2:访问域名显示"Access denied"或403错误。 - 默认文档列表里的文件在根目录下都不存在,Nginx找不到默认文件,且目录索引关闭,返回403 - 检查根目录下是否有index.php或index.html,文件是否上传完整 - 检查文件权限,根目录权限755,文件权限644,所有者www
问题3:访问域名下载index.php文件(不执行PHP)。 - Nginx没有配置PHP解析,.php文件被当成静态文件下载 - 检查站点配置里有没有`location ~ .php$`块,宝塔创建站点时默认会加,如果被删了需要重新加 - 检查PHP版本是否安装并运行,"软件商店"里确认PHP状态是运行中 - 在站点设置-"PHP版本"里确认选了已安装的PHP版本,不是"纯静态"
问题4:子目录访问不生效。 - 访问`域名/subdir/`显示403,检查子目录下有没有默认文档文件 - 子目录有独立程序的话,在"网站"-"设置"-"子目录绑定"里添加子目录,单独配置PHP版本和默认文档
问题5:移动端和PC端默认页不同。 - 可以用Nginx判断User-Agent,移动端访问返回移动版默认页: ``` if ($http_user_agent ~* "(android|iphone|ipad)") { rewrite ^/$ /mobile/index.html last; } ``` - 或者用PHP判断设备类型跳转,在index.php里写判断逻辑。
默认文档顺序虽然是小设置,但影响网站能否正常打开,是宝塔面板建站的基础配置。记住PHP网站index.php在前、删除默认index.html、保存后清缓存刷新,这三步就能解决绝大多数默认页问题。

更新时间:2026-08-26 18:13:15
上一篇:如何替换网站中的图片而不破坏布局:尺寸、比例、CSS适配全解