Laravel控制器操作返回错误404

时间:2015-02-19 15:52:02

标签: php laravel-routing

我在尝试访问链接到控制器操作的路由时遇到404错误。

我在 routes.php 文件中定义了这样的路由。

Route::controller('error', 'ErrorsController');

ErrorsController 类如下所示。

class ErrorsController extends BaseController {

    public function __construct()
    {
        // vacio
    }

    public function getIndex()
    {
        return View::make('error.accessdenied');
    }

    public function getAccessDenied()
    {
        return View::make('error.accessdenied');
    }
}

我有一个视图,如果它正常工作,可以链接到chek。链接创建如下

{{ HTML::linkAction('ErrorsController@getAccessDenied', 'Error') }}

当我点击链接时,页面会移动到网址'mytestdomain.com/error/access-denied',返回404错误,但是当我访问网址'mytestdomain时。 com / error'它完美无缺。

对我做错了什么的想法?

编辑: 运行命令php artisan routes这些是指向ErrorsController的路由:

+--------+------------------------------------------------------------------------------------------------+------+--------------------------------------+----------------+---------------+
| Domain | URI                                                                                            | Name | Action                               | Before Filters | After Filters |
+--------+------------------------------------------------------------------------------------------------+------+--------------------------------------+----------------+---------------+
|        | GET|HEAD error/index/{one?}/{two?}/{three?}/{four?}/{five?}                                    |      | ErrorsController@getIndex            |                |               |
|        | GET|HEAD error                                                                                 |      | ErrorsController@getIndex            |                |               |
|        | GET|HEAD error/access-denied/{one?}/{two?}/{three?}/{four?}/{five?}                            |      | ErrorsController@getAccessDenied     |                |               |
|        | GET|HEAD|POST|PUT|PATCH|DELETE error/{_missing}                                                |      | ErrorsController@missingMethod       |                |               |
+--------+------------------------------------------------------------------------------------------------+------+--------------------------------------+----------------+---------------+

只有第二和第四个正在工作。

2 个答案:

答案 0 :(得分:0)

看起来好像以你赢得的方式指定路线。此类路由仅适用于RESTful请求。请参见> http://laravel.com/docs/4.2/controllers#restful-resource-controllers>。

您可能必须使用Route :: get / post显式指定路径。

答案 1 :(得分:0)

不知怎的,我发现了这个问题。

出于某种原因,我的apache服务器不会重写 mytestdomain.com/error / * route。可能是与单词error和apache模块mod_rewrite相关的东西。

无论如何,如下定义路线可以解决问题。

Route::controller('fail', 'ErrorsController');