Laravel 路由错误 404

Posted

技术标签:

【中文标题】Laravel 路由错误 404【英文标题】:Laravel routing error 404 【发布时间】:2018-01-15 22:17:50 【问题描述】:

在我的 laravel 项目中,路由无法正常工作。当我转到 /exchange 时,我收到错误 404。重定向效果很好。

<?php
Route::group(['middleware' => ['web']], function () 

Route::get('/', function() 
    return redirect('exchange');
);
Route::get('exchange', function() 
    return view('exchange');
);

Route::get('tos', function() 
    return view('tos');
);
Route::get('contact', function() 
    return view('contact');
);

Route::controller('admin', 'AdminController');

);

还有我的 .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]

# Handle Authorization Header
RewriteCond %HTTP:Authorization .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%HTTP:Authorization]
</IfModule>

我必须做什么来修复我的项目?

【问题讨论】:

其他路线都在工作??? 不,总是 404 你用的是哪个 laravel 版本? 这不是我的项目,有人在 2016 年 6 月写了这个 请在 Route::group 之外创建交换路由并检查 【参考方案1】:

你必须添加:-

AllowOverride All 到 etc/apache2 apache2.conf 文件

<Directory /usr/share>

AllowOverride All
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

它将处理路由错误。

【讨论】:

【参考方案2】:

你在 Apache 中遗漏了一个重要的指令

AllowOverride All

在 httpd.conf 文件中定义它,以便服务器支持您的 .htaccess 和 URL 重写。

爆破它,允许所有类型的覆盖。

<Directory "PATH_TO_PROJECT">
     AllowOverride All
</Directory>

使其工作的最低限度。只允许修改文档类型和重写的覆盖。

<Directory "PATH_TO_PROJECT">
     AllowOverride FileInfo
</Directory>

【讨论】:

我在我的 apache2.conf 中添加了这个。重新启动后,当我进入站点时,出现内部服务器错误。 检查日志以获取确切的错误消息。 500 Internal Server Error 太笼统了。此外,路径必须指向 Laravel 项目的 /public 文件夹,其中包含 index.php 引导程序和 Laravel .htaccess

以上是关于Laravel 路由错误 404的主要内容,如果未能解决你的问题,请参考以下文章

laravel 路由和 404 错误

更改参数顺序的 Laravel 路由中出现 404 错误

带有连字符 404 错误的 Laravel 路由参数

Laravel 重定向到一个路由,但是 apache 给出 404 错误

使用 Laravel 路由时找不到 404 错误

Ajax 在 Laravel 8 中返回 404 错误但路由存在