【问题标题】:laravel controller doesn't worklaravel 控制器不起作用
【发布时间】:2013-03-28 00:00:34
【问题描述】:

1。我正在关注CodeHappy: Using Controllers 学习使用 laravel 控制器,在我的 PC "myproject/" 指向 "wamp/www/laravel/public" 文件夹中,当我试试“myproject/account/login”浏览器显示:


未找到

在此服务器上找不到请求的 URL /account/login。


2。显然,浏览器试图找到“帐户”文件夹而不是使用控制器,我在“公共”下创建了“帐户”文件夹并再次尝试,我的猜测被证明是正确的。在使用控制器之前我应该​​在任何地方进行配置吗?

我的代码:

应用程序/控制器/account.php

<?php
class Account_Controller extends Base_Controller
{
    public function action_index(){
        echo "This is the profile page.";
    }
    public function action_login(){
        echo "This is the login form.";
    }
    public function action_logout(){
        echo "This is the logout action.";
    }
}

/application/routes.php

    Route::get('/', function()
    {
        return View::make('home.index');
    });
    Route::controller('account');

【问题讨论】:

  • 您确定这是控制器的问题吗?您是否确认普通路线有效,例如 Route::get('my/something', function() { return 'world'; });也许尝试访问myproject/index.php/account/login - 这将确认您的重写规则是否有效。

标签: php laravel laravel-routing


【解决方案1】:

@Phill Sparks 完全正确(完全正确!他已经使用 Laravel 多年了)。如果您的浏览器从 服务器 报告 404,除非您完全删除 404 事件,否则该请求甚至不会通过 Laravel。

试试/index.php/account/login。如果它有效,你就知道你的重写规则是拙劣的。如果它也不起作用,那么你手头有一个更严重的问题。

如果你使用的是 Apache,你应该在你的 htaccess 文件中找到 Laravel 的重写规则。如果您无法通过 htaccess 加载 mod_rewrite,则需要将它们迁移到您的服务器配置中。

如果您使用的是 nginx,您将需要在 server 块中使用类似的内容:

    location / {
            try_files $uri $uri/ @laravel;
    }
    location @laravelDesktop {
            rewrite ^/(.*)$ /index.php?/$1 last;
    }

或者如果在子目录中

    location /my/subdir/ {
            try_files $uri $uri/ @laravel;
    }
    location @laravel {
            rewrite ^/my/subdir/(.*)$ /index.php?/$1 last;
    }

【讨论】:

    猜你喜欢
    • 2015-06-10
    • 2017-01-26
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2015-10-17
    • 1970-01-01
    • 2021-03-27
    相关资源
    最近更新 更多