如何在Laravel应用中部署独立简单PHP应用并通过/api路径正常访问

该问题的核心原因是Laravel默认的URL重写规则会将站点下所有请求都转发到Laravel自身的入口文件处理,导致/api路径的请求没有匹配到独立的API应用目录,按照你使用的Web服务器选择对应方案修改即可:
一、Nginx 配置修改
在当前站点的Nginx配置文件中,优先添加/api路径的匹配规则,放在原有Laravel的location规则之前:
location ^~ /api { # 替换为你API目录的实际绝对路径,如果放在Laravel的public目录下就填对应路径 alias /www/wwwroot/example.com/public/api; try_files $uri $uri/ /api/index.php$is_args$args; location ~ \.php$ { # 替换为你实际使用的php-fpm监听地址 fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } }
修改完成后执行nginx -s reload重载配置即可生效。
二、Apache 配置修改
两种修改方式任选其一即可:
方式1:修改Laravel的重写规则
编辑Laravel根目录下public/.htaccess文件,在原有规则最顶部添加排除/api路径的规则:
RewriteEngine On # 新增行:匹配到/api开头的请求直接跳过后续Laravel重写规则 RewriteRule ^api($|/) - [L] # 下方保留Laravel原有重写规则即可
方式2:给API应用单独配置重写规则
在你的API目录下新建.htaccess文件,写入以下内容:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
修改完成后重启Apache服务生效。
注意事项
- 确保API目录的权限和Web服务运行用户的权限一致,避免出现无权限访问的报错
- 如果你之前在Laravel中配置过
/api开头的路由,需要调整或删除这部分路由,避免优先级冲突 - 修改配置后先清除浏览器缓存再测试,避免缓存的404结果影响验证
内容的提问来源于stack exchange,提问作者Rashed Raj
相关产品推荐
相关产品推荐

