Laravel 5 包 router.php 被忽略

Laravel 5 package router.php being ignored

我已遵循有关服务提供商的 Laravel 文档,我正在尝试创建自己的 package/module。

我的包的 router.php 文件被完全忽略了,但我可以从引导和注册函数中 dd() 正常:

abstract class ServiceProvider extends \Illuminate\Support\ServiceProvider
{

    public function boot()
    {
        if ($module = $this->getModule(func_get_args())) {
            include __DIR__.'/'.$module.'/routes.php';
        }
        $this->loadViewsFrom(__DIR__.'/'.$module.'/Views', 'core');
    }

    public function register()
    {
        if ($module = $this->getModule(func_get_args())) {

        }
    }

    public function getModule($args)
    {
        $module = (isset($args[0]) and is_string($args[0])) ? $args[0] : null;

        return $module;
    }

}

在我的 app/Modules/Core/router.php:

Route::get('/test', function(){
    return 'hello';
});

我只是收到一个找不到页面的错误(不是 Laravel 错误)。

我错过了什么?

根据你在这里所说的

I simply get a page not found error (not a Laravel error).

听起来您的 Web 服务器设置不正确。即此错误发生在高于(或低于,取决于您的观点)Laravel.

尝试加载来自

的路线
http://example.com/index.php/home

您可能会发现 Laravel 对该页面的响应很好。

PHP 像 Laravel 这样的框架通常将所有流量定向到一个 index.php -- 有时这个文件被称为前端控制器,有时是前端加载器,有时又是一个索引引导程序。它有无数的名字。通过将所有流量定向到这个文件,框架可以实现自己的控制器调度逻辑。

如果您看到的是 网络服务器 错误页面而不是 Laravel 网页,这可能意味着

  1. 您在 public/

  2. 中缺少 .htaccess 文件
  3. 您的 Web 服务器配置为忽略 .htaccess 个文件

  4. 您的网络服务器没有安装或启用 MOD_REWRITE 模块

  5. 以上的一些组合

MOD_REWRITE模块是允许.htaccess文件说

的apache模块

Hey, all you requests -- don't server a file, go to index.php instead.

其他网络服务器(如 nginx)具有用于相同目的的不同模块。如果是您,请查阅您的文档。