当我尝试访问我的测试应用时,只需索引路由工作: malte.italoborg.es
如果我尝试访问其他路线,例如: malte.italoborg.es/admin
我收到404错误。
我的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;
}
}
我在StackOverflow的另一个链接中尝试了这个解决方案,但对我来说并不起作用。
All Laravel routes “not found” on nginx
我在数字海洋中使用nginx。
:: UPDATE ::
我的routes.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');
});
});
答案 0 :(得分:8)
请尝试更改此
location / {
try_files $uri $uri/ /index.php;
}
到这个
location / {
try_files $uri $uri/ /index.php?$query_string;
}
并删除此行:
try_files $uri /index.php =404;
答案 1 :(得分:0)
修复Laravel 5.1:
$ vi /etc/nginx/sites-available/default
评论:
# try_files $uri $uri/ =404;
添加:
try_files $uri $uri/ /index.php;
答案 2 :(得分:0)
对于流明和laravel这解决了我的问题:
我已将nginx上的文档根目录更改为项目的根目录:
root /usr/you/laravelinstall/public;