繁体   English   中英

找不到 Laravel 5 路由对象

[英]Laravel 5 Routing Object Not Found

我通常使用 Laravel 4,现在我正在尝试学习 Laravel 5

命名控制器路由存在问题:

我有这样的路线:

Route::get('/', [
    'uses' => 'HomeController@viewHome', 
    'as' => 'home'
]);

Route::get('/events', [
        'uses' => 'EventController@viewEvent', 
        'as' => 'event'
    ]);

当我以“home”(localhost/laravel/)运行路线时,它的工作完美无缺

但是当我将路由作为“事件”(localhost/laravel/events)运行时:找不到对象!在此处输入图片说明

我已经通过像这样交换它来确保 viewEvent 方法正确运行:

Route::get('/', [
    'uses' => 'EventController@viewEvent', 
    'as' => 'home'
]);

Route::get('/events', [
        'uses' => 'HomeController@viewHome', 
        'as' => 'event'
    ]);

我可以运行 viewEvent 但我不能运行 viewHome

我的代码有问题吗?

======================== 已解决 ======================== ====

在@DamienPirzy 的帮助下,我意识到当我禁用 /public/ 文件夹时,我想我也必须将 .htaccess 放到主文件夹中:)

感谢大家的快速响应:) 问题已解决

将此 htaccess 放入公用文件夹。 确保你有 apache mod 重写工作。

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

我在routes.php中看到

Route::get('/events', [
        'uses' => 'EventController@viewEvent', 
        'as' => 'event'
    ]);

但是你跑

localhost/laravel/event  

应该运行

localhost/laravel/events

你能检查一下 .htaccess 文件吗? 因为屏幕错误来自 Apache。 该请求没有发送到 Laravel 应用程序。

或检查 mod_rewrite 是否启用?

尝试将 .htaccess 文件更改为此

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

从 public 文件夹中复制 htacess 文件并将其粘贴到根目录中。 它应该解决问题,还要检查所有路由的拼写; 他们必须是正确的。

localhost/cms/index.php/等项目名称后添加 index.php 通过这样做,您的所有路由都可以正常工作

尝试一下

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM