当前位置:  开发笔记 > 编程语言 > 正文

Laravel + AngularJS Nginx路由

如何解决《Laravel+AngularJSNginx路由》经验,为你挑选了1个好方法。

我有以下问题,我需要配置Nginx,所以在任何URL用户访问时,它将保留uri(示例domain.com/some/url/),但只传递给laravel /并让Angular处理路由.

Route::get('/', function(){
   return view('index');
});

当访问/api/{anything}Laravel时会启动.

现在我index.html从公共文件夹返回,直到找到解决方案这是我的配置:

location / {
    index index.html;
    try_files $uri $uri/ /index.html;
}
location /api {
    index index.php;
    try_files $uri $uri/ /index.php?$query_string;
}

我知道我可以做一条路线:

Route::get('{anything?}', function(){
    return view('index');
});

但是要广泛.

更新:

location / {
    rewrite ^/(.*)$ / break;
    index index.php;
    try_files $uri $uri/ /index.php;
}
location /api {
    index index.php;
    try_files $uri $uri/ /index.php?$query_string;
}

shukshin.iva.. 6

你无法通过简单的重写实现目标.Laravel总是知道真实的URI.

关键是你需要只用一条路线来处理所有请求.Laravel使用$_SERVER['REQUEST_URI']变量进行路由,并将其传递给Laravel fastcgi.该变量REQUEST_URIfastcgi_paramsnginx $request_uri变量的文件中设置:

fastcgi_param  REQUEST_URI        $request_uri;

所以,你需要通过REQUEST_URI/到Laravel来处理请求/bla/bla,因为它是/.

只需在配置中添加一行:

location ~ \.php$ {
    # now you have smth like this
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;

    # add the following line right after fastcgi_params to rewrite value of the variable
    fastcgi_param  REQUEST_URI       /;
}

如果你也有/api/,你需要对该行进行一些编辑:

set $request_url $request_uri;
if ($request_uri !~ ^/api/(.*)$ ) {
    set $request_url /;
}
fastcgi_param  REQUEST_URI $request_url;

Nginx警告说这if是一个邪恶,这只是第一个想法.

总结一下:

/去Laravel /路线.

/api/* 去Laravel api路线.

另一个要求是去Laravel /路线.



1> shukshin.iva..:

你无法通过简单的重写实现目标.Laravel总是知道真实的URI.

关键是你需要只用一条路线来处理所有请求.Laravel使用$_SERVER['REQUEST_URI']变量进行路由,并将其传递给Laravel fastcgi.该变量REQUEST_URIfastcgi_paramsnginx $request_uri变量的文件中设置:

fastcgi_param  REQUEST_URI        $request_uri;

所以,你需要通过REQUEST_URI/到Laravel来处理请求/bla/bla,因为它是/.

只需在配置中添加一行:

location ~ \.php$ {
    # now you have smth like this
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;

    # add the following line right after fastcgi_params to rewrite value of the variable
    fastcgi_param  REQUEST_URI       /;
}

如果你也有/api/,你需要对该行进行一些编辑:

set $request_url $request_uri;
if ($request_uri !~ ^/api/(.*)$ ) {
    set $request_url /;
}
fastcgi_param  REQUEST_URI $request_url;

Nginx警告说这if是一个邪恶,这只是第一个想法.

总结一下:

/去Laravel /路线.

/api/* 去Laravel api路线.

另一个要求是去Laravel /路线.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有