📌  相关文章
📜  在此服务器上找不到请求的 URL. Apache 2.4.47 (Win64) OpenSSL 1.1.1k PHP 7.3.28 Server at localhost Port 80 error in laravel - PHP (1)

📅  最后修改于: 2023-12-03 15:23:34.775000             🧑  作者: Mango

在此服务器上找不到请求的 URL

介绍

在 Laravel 中,当你访问一个不存在的 URL 时,可能会遇到下面这个错误:

在此服务器上找不到请求的 URL. Apache 2.4.47 (Win64) OpenSSL 1.1.1k PHP 7.3.28 Server at localhost Port 80

本文将详细介绍这个错误的原因和解决方法。

错误原因

出现这个错误一般有以下几种原因:

  • 路由不存在
  • .htaccess 文件不存在或配置有误
  • 服务器没有开启 mod_rewrite 模块
解决方法
路由不存在

如果出现这个错误,首先应该检查一下你请求的 URL 是否存在对应的路由定义。如果没有,可以在 routes/web.php 文件中添加路由定义。

Route::get('/your/route', function () {
    return view('your.view');
});

或者,你也可以使用 Route::fallback 方法来定义一个全局的 404 路由。

Route::fallback(function () {
    abort(404, 'Page not found');
});
.htaccess 文件不存在或配置有误

如果你正在使用 Apache 服务器,那么你需要在项目根目录下创建一个名为 .htaccess 的文件,并添加以下代码:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

这段代码的作用是将所有请求转发到 public 目录下。

服务器没有开启 mod_rewrite 模块

如果你的服务器没有开启 mod_rewrite 模块,那么你需要手动开启它。

在 Ubuntu 系统上,可以使用以下命令开启 mod_rewrite

sudo a2enmod rewrite

在 CentOS 系统上,可以使用以下命令开启 mod_rewrite

sudo vi /etc/httpd/conf/httpd.conf

# 将以下行改为
# AllowOverride All
结论

出现 在此服务器上找不到请求的 URL. 错误时,可以先检查一下路由是否存在,.htaccess 文件是否配置正确,服务器是否开启了 mod_rewrite 模块。如果不行,可以查看服务器的错误日志,以获取更多信息。