【发布时间】:2020-03-07 13:41:58
【问题描述】:
我知道这无论如何都不是一个理想的设置,但我希望有人可以帮助我使这个场景发挥作用。本质上,我有两个:
-
Vue SPA 应用程序
- 营销前端
- 只有几个 URI:
- hxxps://domain.com
- hxxps://domain.com/#/{首页|联系方式|登录}
-
Codeigniter (CI) PHP 应用程序
- 主要应用
- 具有多个 URI 端点的集中式路由器和类似 Laravel (index.php?$uri):
- hxxps://domain.com/{仪表板|帐户|等}
我真的试图避免在 Codeigniter 中嵌入静态 Vue 应用程序(似乎是额外的开销)并避免使用代理方法,因为它是静态内容并且不需要运行 Node。
到目前为止,这是我对 Nginx 配置的尝试:
/etc/nginx/sites-available/default
server {
root /var/www;
index index.php index.html;
location / {
# Codeigniter
try_files $uri $uri/ /index.php?/$request_uri;
# Vue SPA
if ($uri ~ '') {
root /var/www/path_to_spa/dist;
}
}
}
我已成功为这两个应用程序硬连线的资产路径。
这对于 Vue 和 CI 应用程序之间的路由来说似乎已经足够好了,但是 CI 应用程序现在无法处理 POST 和重定向请求,因为我收到了 404 - 可能是因为松散的 URI 检查。
Nginx 禁止条件 (if) try_files 语句,所以我觉得我的手很紧。想知道是否有人可以在这里提供更优雅的解决方案:)
【问题讨论】:
-
而不是 if( $uri ~ '' ),你试过 location = / { 吗?
-
@PavelLint 我尝试了一个 location = / 并删除了 $uri 检查(针对 SPA)并为 PHP 应用程序设置了默认位置 /,但现在它现在只默认为 PHP 应用程序,不幸的是
-
这是用于生产的吗?您使用的是哪个托管服务提供商?
-
好的,但是这个配置现在可以工作了,除了 post-requests? IE。您在
/上获得 SPA 应用程序,在其他路线上获得 PHP? -
@PavelLint 是的,我奇怪的那个似乎同时加载了两者,只是 POST 请求返回 404。
标签: laravel codeigniter vue.js nginx vue-router