【发布时间】:2018-02-26 04:19:44
【问题描述】:
由于某种原因,我的 Laravel 项目的未经授权的路线显示为 404:
<?php
Route::group(['middleware' => 'auth'], function () {
Route::resource('bookings', 'BookingController');
Route::get('bookings.export', 'BookingController@export')->name('bookings.export');
});
Auth::routes();
Route::get('/', function () {
return redirect('/dashboard');
});
Route::get('/bookings/contract', 'BookingController@contract')->name('contract');
当我尝试访问 /bookings/contract 时,我收到 404 错误。这很奇怪,因为如果我尝试访问 bookings.export 它工作正常。
我在共享主机上,因此无法访问虚拟主机,我的 .htaccess 文件中有以下内容:
DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml
AddHandler application/x-httpd-php71 .php .php5 .php4 .php3
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
# Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /
# 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]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
有人知道这里发生了什么吗?
【问题讨论】:
-
@Leo_Kelmendi 你错了,如果你想以编程方式访问它们以进行重定向等,则使用 Laravel 命名路由......这是你需要访问普通 url 请求的路径。
-
将
contract路由放在Route::group之前 -
@NorrisOduro 哇,似乎已经做到了,但为什么会这样?如果您将其写为答案,我会接受。谢谢
-
您的
show方法适合您吗?在BookingController内部调用bookings/{booking_id}路由.is。booking/1带有 get 动词
标签: php laravel .htaccess routing