在nginx上找不到Laravel路线

时间:2015-07-18 17:22:14

标签: php laravel nginx routes digital-ocean

当我尝试访问我的测试应用时,只需索引路由工作: 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');
    });
});

3 个答案:

答案 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;