Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 用于静态Vue SPA和PHP应用程序的Nginx配置_Laravel_Codeigniter_Vue.js_Nginx_Vue Router - Fatal编程技术网

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/{仪表盘|账户|等}
我真的试图避免在Codeigniter中嵌入静态Vue应用程序(似乎是额外的开销),并避免使用代理方法,因为它是静态内容,不需要运行节点

以下是我迄今为止对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\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。