[英]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.