【问题标题】:Laravel routes not working.Laravel 路线不起作用。
【发布时间】:2013-05-03 11:26:50
【问题描述】:

尝试开始使用 Laravel。通过一个简单的教程(我想),他们通过 route.php 页面进行了此操作。

Route::controller(Controller::detect());
Route::get('about', 'home@about');

我还有一个不工作的简单 login.php 页面

<?php

class Login_Controller extends Base_Controller{

    public function action_index()
    {
        echo 'test';
    }

}

?>

似乎我创建的任何东西都不会显示出来。它只是给出一个 404 错误。我需要冲洗一些东西吗?我尝试重新启动 Apache 但没有运气。

如果需要 Composer,我将如何设置 .json?我会把它放在哪里

【问题讨论】:

  • 是 Apache 404 错误还是 Laravel 404 错误?如果是 Apache,您可能需要启用 mod_rewrite。此外,您应该省略 PHP 的关闭 ?&gt;,这可以防止任何不必要的空格通过并导致标题错误。
  • 这是一个 Apache 404 错误..mod_rewrite 应该被打开..我在 application.php 中进行了更改以反映这一点。但我会仔细检查配置页面

标签: php laravel composer-php laravel-routing


【解决方案1】:

Route::controller() 应始终排在最后,因为这将指定许多通配符路由,并且随后的路由可能不会被捕获。

Route::get('about', 'home@about');
Route::controller(Controller::detect());

话虽如此,我始终鼓励您手动指定控制器。使用Controller::detect() 意味着将路由所有控制器,包括基本控制器。

请记住,在 Laravel 中,您应该从视图中返回内容,而不是直接回显。因此,对于您的登录控制器,请改用此方法...

function action_index()
{
    return 'test';
}

这应该(如果您正确配置了 apache)响应 http://mysite.com/loginhttp://mysite.com/login/index,如果这些都不起作用,请尝试在地址中添加 index.php,例如 http://mysite.com/index.php/login

【讨论】:

  • 您提到我是否正确配置了 apache?我需要检查什么?我相信我启用了 mod_rewrite 并在 application.php 中进行了更改..但我没有更改主机文件中的任何内容,所以我仍然应该使用 //ServerIP/WebAPP/public
  • 访问//ServerIP/WebAPP/public/index.php/login时会发生什么?
  • 我不在我的开发机器前,等我回来再报告。感谢您的快速回复!
  • ....它与 public/index.php/login 一起工作。如何在 Ubuntu 上编辑我的 apache 配置文件,命令是什么?
  • 如果 public/index.php/login 有效,那么 PHP 设置正确,但您没有重写。在这种情况下,有很多事情可能是错误的,特别是如果您自己配置了 apache。首先确认 mod_rewrite 已启用并且允许覆盖。来自 apache.org 的 how to htaccess 很好
猜你喜欢
  • 2017-10-02
  • 2014-09-08
  • 2015-03-18
  • 2017-12-13
  • 2017-02-27
相关资源
最近更新 更多