宝塔面板中PHP项目不直接创建虚拟目录,而是通过Nginx location规则(如location ^~ /api/ { alias /www/wwwroot/myapp-api/; ... })或Apache的Alias指令实现子路径映射,确保URL路径与物理目录分离且PHP正确执行。

在宝塔面板的 Linux 环境中,PHP 项目本身不直接“创建虚拟目录”,而是通过 Web 服务器(Nginx 或 Apache)配置 伪静态规则 或 别名(Alias)/重写(rewrite) 实现类似“虚拟目录”的效果——即 URL 路径与物理路径不一致,但能正常访问 PHP 脚本。
一、明确“虚拟目录”在宝塔中的实际含义
宝塔面板没有传统 IIS 那样的“虚拟目录”管理界面。所谓“PHP 创建虚拟目录”,通常指以下两种常见需求:
- 将某个子路径(如
/api)映射到服务器上另一个独立目录(如/www/wwwroot/myapp-api/),与主站点分离; - 让一个域名下的子路径(如
example.com/admin)以独立 PHP 应用方式运行,拥有自己的index.php入口和路由逻辑。
二、Nginx 环境下配置子路径为独立 PHP 应用(推荐)
进入宝塔 → 网站 → 找到目标站点 → “设置” → “配置文件”,在 server 块内添加 location 规则(放在 location / { ... } 之前):
location ^~ /api/ {
alias /www/wwwroot/myapp-api/;
if (!-e $request_filename) {
rewrite ^/api/(.*)$ /api/index.php?/$1 last;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
说明:
-
^~ /api/表示优先匹配该前缀,避免被主 location 拦截; -
alias后必须带末尾/,且指向真实目录; -
SCRIPT_FILENAME $request_filename是关键,确保 PHP 正确识别入口文件(区别于root); - 若子应用使用 ThinkPHP/Laravel 等框架,需同步配置其伪静态规则(如 Laravel 的
try_files $uri $uri/ /api/index.php?$query_string;)。
三、Apache 环境下用 Alias + mod_rewrite 实现
宝塔 → 网站 → 设置 → “Apache 配置文件”,在 内添加:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
Alias /api "/www/wwwroot/myapp-api"
<directory>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</directory>
注意:
- 确保已启用
mod_alias和mod_rewrite(宝塔默认开启); - 子目录中需有正确的
.htaccess,例如 Laravel 的标准重写规则; - PHP 运行模式建议选
PHP-FPM,避免 CGI 下的环境变量异常。
四、替代方案:用二级目录+独立站点更稳妥
如果对路径隔离要求高(如权限、PHP 版本、SSL 独立),建议不强行“虚拟”,而是:
- 在宝塔新建一个子域名站点(如
api.example.com),根目录设为/www/wwwroot/myapp-api; - 再通过 Nginx 主站点反向代理
/api/到该子域名(适合前后端分离或微服务场景); - 或直接用主域名的子目录绑定新站点(宝塔支持“目录绑定”,路径为
/api,根目录指定目标文件夹)。
这种方式无需手动改配置,兼容性好,更新和 SSL 管理也更直观。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










