本文目录导读:

在 PHP 项目中配置站点默认页面(即当用户访问目录时自动加载的文件),主要有以下几种方法,按推荐程度排序:
通过 Web 服务器配置(最推荐)
Apache 服务器(使用 .htaccess 或 httpd.conf)
修改 .htaccess(无需重启服务器,适合共享主机)
DirectoryIndex index.php index.html index.htm
将该行添加到站点根目录的 .htaccess 文件中,Apache 会按顺序查找文件,优先显示第一个存在的文件。
修改 httpd.conf(性能更好,需重启 Apache)
<Directory "/var/www/html">
DirectoryIndex index.php index.html index.htm
</Directory>
Nginx 服务器
编辑站点配置文件(通常在 /etc/nginx/sites-available/ 下):
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html index.htm; # 这行是关键
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 版本号可能不同
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
修改后需执行 sudo nginx -t 测试配置,sudo systemctl restart nginx。
通过 PHP 框架的路由机制(适用于现代框架)
如果是使用 Laravel、Symfony、ThinkPHP 等框架,默认页面由框架路由控制,而非服务器配置。
Laravel 示例
// routes/web.php
Route::get('/', function () {
return view('welcome');
});
访问 http://yourdomain.com/ 时自动加载 welcome 视图。
ThinkPHP 6 示例
// app/controller/Index.php
class Index extends BaseController
{
public function index()
{
return view('index/index');
}
}
默认路由 http://yourdomain.com/ 自动映射到 Index 控制器的 index 方法。
通过 PHP 代码手动跳转(较少用,但兼容性最强)
在站点根目录创建 index.php,使用 header 重定向:
<?php
// 可以根据条件决定跳转到哪个页面
header('Location: login.php');
exit;
?>
或包含其他文件:
<?php
// 简单的默认页面分发器
$page = $_GET['page'] ?? 'home';
include "pages/{$page}.php";
?>
综合方案:服务器 + 框架路由配合
一些项目同时使用 .htaccess 和框架路由,Laravel 的典型配置:
# .htaccess
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
这样服务器只负责将请求传递给 index.php,具体显示什么由 Laravel 的路由决定。
最佳实践建议
| 场景 | 推荐方式 |
|---|---|
| 传统 PHP 项目(无框架) | Apache .htaccess / Nginx index 指令 |
| 使用 Laravel/ThinkPHP 等 | 框架路由,同时确保服务器 index 指向 index.php |
| 共享主机无法修改服务器配置 | .htaccess 或 PHP header 跳转 |
| 需要根据用户权限显示不同首页 | PHP 条件判断 + 框架路由 |
检查当前默认页面配置的方法: 在站点根目录执行 php -i | grep "User/Group"(Linux)或查看 phpinfo 中的 Server API 信息,然后根据 Web 服务器类型检查对应的配置文件。