可通过Nginx location配置、反向代理或伪静态+PHP多入口三种方式实现同一域名下不同路径映射至独立子目录:1. location配置直接映射静态资源;2. 反向代理转发至本地不同端口服务;3. 伪静态重写结合PHP路由分发。

如果您在宝塔面板中希望让同一个域名通过不同路径访问多个独立子目录下的站点内容,例如 example.com/app 指向 /www/wwwroot/example/app,而 example.com/api 指向 /www/wwwroot/example/api,则需绕过默认的单根目录限制,采用反向代理、伪静态或Nginx location配置等方式实现。以下是具体操作方法:
一、使用Nginx的location规则配置多子目录映射
该方法直接在站点配置文件中添加多个location块,将特定URL路径精准转发到对应子目录的index文件或后端服务,不改变主站根目录,适用于静态资源分离或前后端同域部署场景。
1、进入宝塔面板,点击目标站点右侧的【设置】按钮。
2、切换到【配置文件】选项卡,定位到 server { ... } 区域内,在 root 指令下方插入以下location配置:
3、为 /app 路径添加配置:
location ^~ /app/ {
alias /www/wwwroot/example/app/;
try_files $uri $uri/ /app/index.html;
}
4、为 /api 路径添加配置:
location ^~ /api/ {
alias /www/wwwroot/example/api/;
try_files $uri $uri/ /api/index.php?$args;
}
5、点击【保存】,然后点击【重载配置】使Nginx生效。
二、通过反向代理方式将子路径指向本地不同端口服务
当各子目录实际对应的是运行在不同端口的独立应用(如Node.js、Python Flask等),可利用Nginx反向代理能力,将路径前缀剥离后转发至对应服务,实现逻辑隔离与统一域名入口。
1、确保目标子应用已在服务器后台稳定运行,例如:App服务监听 127.0.0.1:3001,API服务监听 127.0.0.1:3002。
2、在站点【配置文件】中,删除原有location相关配置,新增如下代理段:
3、配置App子路径代理:
location ^~ /app/ {
proxy_pass http://127.0.0.1:3001/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
4、配置API子路径代理:
location ^~ /api/ {
proxy_pass http://127.0.0.1:3002/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
5、保存配置并重载Nginx。
三、利用伪静态规则配合PHP多入口实现路径分发
适用于基于PHP框架(如ThinkPHP、Laravel)构建的项目,主站根目录下部署统一入口index.php,通过解析REQUEST_URI将不同路径请求分发至对应子目录中的应用逻辑,无需修改Nginx核心配置。
1、将所有子应用代码放入主站根目录的对应子文件夹,例如:/www/wwwroot/example/app/ 和 /www/wwwroot/example/api/。
2、在主站根目录(/www/wwwroot/example/)下创建统一入口文件 index.php,内容包含路由分发逻辑。
3、在站点【伪静态】选项卡中,清空原有规则,填入以下通用重写规则(适用于ThinkPHP风格):
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?s=/$1 last;
}
4、在 index.php 中根据 $_SERVER['PATH_INFO'] 或 $_GET['s'] 解析路径前缀,动态引入对应子目录下的启动文件。
5、保存伪静态规则并重启PHP进程以确保生效。










