在 nginx 上找不到 Laravel 路由
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/31493634/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Laravel routes not found on nginx
提问by Italo Borges
when I try to access my test app, just the index route works: malte.italoborg.es
当我尝试访问我的测试应用程序时,只有索引路径有效: malte.italoborg.es
If I try to access another route, like: malte.italoborg.es/admin
如果我尝试访问另一条路线,例如: malte.italoborg.es/admin
I got 404 error.
我收到 404 错误。
My nginx app file:
我的 nginx 应用程序文件:
server {
listen 80;
server_name malte.italoborg.es;
root /home/italo/www/malte.italoborg.es/public;
charset utf-8;
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /home/log/nginx/malte.italoborg.es-error.log error;
error_page 404 /index.php;
sendfile off;
# Point index to the Laravel front controller.
index index.php;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
#deny all;
}
}
I tried this solution in an another link in StackOverflow, but doesn't worked for me.
我在 StackOverflow 的另一个链接中尝试了这个解决方案,但对我不起作用。
All Laravel routes “not found” on nginx
I'm using nginx in Digital Ocean.
我在 Digital Ocean 中使用 nginx。
::UPDATE::
::更新::
My routes.php
我的路线.php
<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
Route::get('/',
['as' => 'site.welcome.index', 'uses' => 'Site\WelcomeController@index']
);
Route::group(['prefix' => 'admin'], function () {
// Login
Route::get('login',
['as' => 'admin.auth.login', 'uses' => 'Admin\Auth\AuthController@getLogin']
);
Route::post('login',
['as' => 'admin.auth.login', 'uses' => 'Admin\Auth\AuthController@postLogin']
);
Route::get('logout',
['as' => 'admin.auth.logout', 'uses' => 'Admin\Auth\AuthController@getLogout']
);
// Password
Route::get('password/email',
['as' => 'admin.password.email', 'uses' => 'Admin\Auth\PasswordController@getEmail']
);
Route::post('password/email',
['as' => 'admin.password.email', 'uses' => 'Admin\Auth\PasswordController@postEmail']
);
// Password reset
Route::get('password/reset/{token}',
['as' => 'admin.password.reset', 'uses' => 'Admin\Auth\PasswordController@getReset']
);
Route::post('password/reset',
['as' => 'admin.password.reset', 'uses' => 'Admin\Auth\PasswordController@postReset']
);
Route::group(['middleware' => 'auth'], function () {
// Home
Route::get('/', ['as' => 'admin.home.index', 'uses' => 'Admin\HomeController@index']);
// My Account
Route::get('profile',
['as' => 'admin.profile.edit', 'uses' => 'Admin\ProfileController@edit']
);
Route::put('profile',
['as' => 'admin.profile.update', 'uses' => 'Admin\ProfileController@update']
);
// Nail polish
Route::resource('polishes', 'Admin\NailPolishController');
// Brands
Route::resource('brands', 'Admin\BrandController');
// Types
Route::resource('types', 'Admin\TypeController');
});
});
回答by Joel Hinz
Please try changing this
请尝试改变这个
location / {
try_files $uri $uri/ /index.php;
}
to this
对此
location / {
try_files $uri $uri/ /index.php?$query_string;
}
And also remove this line:
并删除此行:
try_files $uri /index.php =404;
回答by blsn
Fix for Laravel 5.1:$ vi /etc/nginx/sites-available/default
修复 Laravel 5.1:$ vi /etc/nginx/sites-available/default
Comment out:# try_files $uri $uri/ =404;
注释掉:# try_files $uri $uri/ =404;
Add:try_files $uri $uri/ /index.php;
添加:try_files $uri $uri/ /index.php;
回答by S.Hossein Asadollahi
For the lumen and laravel this solved my problem:
对于 lumen 和 laravel,这解决了我的问题:
I've change the document root on nginx to root of my project:
我已将 nginx 上的文档根目录更改为我的项目的根目录:
root /usr/you/laravelinstall/public;