Fro*_*oxz 6 php nginx laravel angularjs laravel-5.3
我有以下问题,我需要配置Nginx,所以在任何URL用户访问时,它将保留uri(示例domain.com/some/url/),但只传递给laravel /并让Angular处理路由.
Route::get('/', function(){
return view('index');
});
Run Code Online (Sandbox Code Playgroud)
当访问/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;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以做一条路线:
Route::get('{anything?}', function(){
return view('index');
});
Run Code Online (Sandbox Code Playgroud)
但是要广泛.
更新:
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;
}
Run Code Online (Sandbox Code Playgroud)
你无法通过简单的重写实现目标.Laravel总是知道真实的URI.
关键是你需要只用一条路线来处理所有请求.Laravel使用$_SERVER['REQUEST_URI']变量进行路由,并将其传递给Laravel fastcgi.该变量REQUEST_URI在fastcgi_paramsnginx $request_uri变量的文件中设置:
fastcgi_param REQUEST_URI $request_uri;
Run Code Online (Sandbox Code Playgroud)
所以,你需要通过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 /;
}
Run Code Online (Sandbox Code Playgroud)
如果你也有/api/,你需要对该行进行一些编辑:
set $request_url $request_uri;
if ($request_uri !~ ^/api/(.*)$ ) {
set $request_url /;
}
fastcgi_param REQUEST_URI $request_url;
Run Code Online (Sandbox Code Playgroud)
Nginx警告说这if是一个邪恶,这只是第一个想法.
总结一下:
/去Laravel /路线.
/api/* 去Laravel api路线.
另一个要求是去Laravel /路线.
| 归档时间: |
|
| 查看次数: |
656 次 |
| 最近记录: |