【问题标题】:Routing issues when serving Angular 5 SPA out of a Lumen 5.2 controller endpoint从 Lumen 5.2 控制器端点提供 Angular 5 SPA 时的路由问题
【发布时间】:2018-08-24 16:37:29
【问题描述】:

我正在尝试从单个路由 Lumen 端点提供 Angular SPA。 Angular 应用程序的初始启动在直接导航到端点时有效,加载 Angular SPA 的任何子路由都不起作用

# index.twig

class CoreSpaController extends AbstractTemplateController
{
    public function index()
    {
        return $this->renderView('@spa/index.twig');
    }
}

#routes.php

$app->group([
    'prefix' => 'app',
], function (Application $app) {
    $app->get('/', ['as' => 'app.home', 'uses' => 'Spa\\SpaController@index']);

    $app->get('*', function() {
        return 'foo';
    });
});

Lumen 应用程序通过代理通道提供服务

#nginx.conf

location ~ (/app) {
    proxy_set_header X-Forwarded-Host $host:$server_port;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://lumenDockerRunningContainer;
  }

/app/ 加载正常

/app/foo 是一个正确路由的 Angular 子级,它会抛出一个 Lumen NotFoundHttpException

问题不在 Angular SPA 中,因为当它通过 index.html 提供服务时,应用程序按预期路由。

任何帮助/建议将不胜感激。

【问题讨论】:

  • 尝试注册一个路由将所有请求传递给SpaController@index
  • @OluwafemiSule 这不就是$app->get('*', function() { return 'hi'; }); 路由会完成的事情吗?
  • 否,当前返回“hi”。如果想法是让 SpaController@index 作为前端控制器,您需要通过它传递所有请求。
  • @OluwafemiSule 问题是它不返回'hi',如果返回,我会重定向到route('app.home');

标签: php angular laravel nginx lumen


【解决方案1】:

试试这个。

$app->get('/{any:.*}', ['as' => 'globalRoute', 'uses' => 'Spa\\SpaController@index']);

【讨论】:

    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多