📅  最后修改于: 2023-12-03 15:07:43.654000             🧑  作者: Mango
如果你在本地 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.com
和 www.example.com
分别是你设定的虚拟主机的名称和别名,/var/www/example/public
是你的 Laravel 应用程序所在的目录。AllowOverride All
则允许 .htaccess 文件覆盖默认设置。
保存并关闭文件后,重启 Apache 服务:sudo systemctl restart apache2
接下来,需要更新 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
到这里为止,虚拟主机已经设置完成。然而,当你尝试访问 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 路由返回的解决方案。