📜  在 localhost linux 上设置虚拟主机后找不到 laravel 路由返回 - Shell-Bash (1)

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

在 localhost linux 上设置虚拟主机后找不到 laravel 路由返回

如果你在本地 Linux 环境上尝试设置虚拟主机(Virtual Host),同时使用 Laravel 开发 web 应用程序,那么很可能会遇到以下错误:

404 Not Found 
The requested URL /example was not found on this server.

本文将介绍如何正确设置虚拟主机以及如何解决上述问题。

设置虚拟主机

首先,需要在 Apache 配置文件中设置虚拟主机。在 Ubuntu 系统中,Apache 配置文件位于 /etc/apache2/sites-available 目录下。

打开该目录下的 000-default.conf 文件,将以下代码添加到文件末尾:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example/public

    <Directory /var/www/example/public>
        AllowOverride All
    </Directory>
</VirtualHost>

其中,example.comwww.example.com 分别是你设定的虚拟主机的名称和别名,/var/www/example/public 是你的 Laravel 应用程序所在的目录。AllowOverride All 则允许 .htaccess 文件覆盖默认设置。

保存并关闭文件后,重启 Apache 服务:sudo systemctl restart apache2

更新 hosts 文件

接下来,需要更新 hosts 文件,为你所设置的虚拟主机添加一个对应的 IP 地址。

打开终端,输入以下命令打开 hosts 文件:

sudo nano /etc/hosts

在文件的末尾添加以下内容:

127.0.0.1     example.com
127.0.0.1     www.example.com

保存并关闭文件后,刷新 DNS 缓存:

sudo systemctl restart systemd-resolved
解决 404 Not Found 错误

到这里为止,虚拟主机已经设置完成。然而,当你尝试访问 example.com 网站时,可能会遇到 404 Not Found 错误。

这是因为 Laravel 路由配置和 web 服务器的路径不匹配所导致的。要解决这个问题,我们需要更改 Laravel 项目的 .htaccess 文件,并重设 Laravel 应用的 URL。

在 Laravel 项目的 public 目录下,找到 .htaccess 文件。将以下代码添加到文件末尾:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

保存并关闭文件后,打开 Laravel 项目的 .env 文件,将 APP_URL 设置为你的虚拟主机地址:

APP_URL=http://example.com

重启 Apache 服务后,刷新网页,此时应该可以正常访问你的 Laravel 应用程序了。

以上就是在 localhost linux 上设置虚拟主机后找不到 laravel 路由返回的解决方案。