【发布时间】: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