Laravel 用于静态Vue SPA和PHP应用程序的Nginx配置
我知道这不是一个理想的设置,但我希望有人能帮助我使这个方案的工作。基本上,我有两个:Laravel 用于静态Vue SPA和PHP应用程序的Nginx配置,laravel,codeigniter,vue.js,nginx,vue-router,Laravel,Codeigniter,Vue.js,Nginx,Vue Router,我知道这不是一个理想的设置,但我希望有人能帮助我使这个方案的工作。基本上,我有两个: Vue水疗应用程序 营销前端 只有几个URI: hxxps://domain.com hxxps://domain.com/#/{主页|联系|登录} Codeigniter(CI)PHP应用程序 主要应用 集中式路由器&larvel-like(index.php?$uri),带有多个uri端点: hxxps://domain.com/{仪表盘|账户|等} 我真的试图避免在Codeigniter中
- Vue水疗应用程序
- 营销前端
- 只有几个URI:
- hxxps://domain.com
- hxxps://domain.com/#/{主页|联系|登录}
- Codeigniter(CI)PHP应用程序
- 主要应用
- 集中式路由器&larvel-like(index.php?$uri),带有多个uri端点:
- hxxps://domain.com/{仪表盘|账户|等}
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\u files语句,所以我觉得我的手被束缚住了。想知道是否有人能在这里提供更优雅的解决方案:)如果您已经使用的配置很好,并且只在POST请求时给出错误,那么您可以检查它是否是POST
server {
set $vue 0;
root /var/www;
index index.php index.html;
location / {
# Codeigniter
try_files $uri $uri/ /index.php?/$request_uri;
if( $uri = '' ) {
set $vue 1;
}
if ($request_method = POST ) {
set $vue 0;
}
#Vue SPA
if( $vue = 1 ) {
root /var/www/path_to_spa/dist;
}
}
}
未经测试,但我认为你能成功。干杯 您是否尝试过location=/{?@PavelLint而不是if($uri~“”),我尝试了location=/并放弃了$uri检查(对于SPA)只为PHP应用程序设置了默认位置,但现在它只默认为PHP应用程序,不幸的是,这是用于生产的吗?您使用的是哪家主机提供商?好的,但此配置现在可以工作,除了post请求?即,您在
/
上获得SPA应用程序,在其他路径上获得PHP?@Pavelint是的,我拥有的那个似乎奇怪地加载了bo仅POST请求返回404s。