Laravel 8项目配置XAMPP虚拟主机后路由始终返回404问题求助
解决Laravel 8虚拟主机路由404问题
我来帮你排查这个Laravel 8路由404的问题,从你的描述来看,直接访问localhost:8080/laravel/backend/public/正常,但通过虚拟主机laravel.dev:8080访问就报404,大概率是虚拟主机配置、Apache重写模块或者相关配置的问题,咱们一步步来解决:
1. 确保Apache重写模块已开启
Laravel的路由依赖Apache的mod_rewrite模块,这个模块没开的话会导致路由无法解析:
- 打开XAMPP的Apache主配置文件
C:\xampp\apache\conf\httpd.conf - 找到这一行:
把前面的#LoadModule rewrite_module modules/mod_rewrite.so#去掉,开启重写模块 - 重启XAMPP的Apache服务,让配置生效
2. 修正虚拟主机的端口配置
你的虚拟主机配置有两处需要调整:
- 虚拟主机的端口绑定应该用
*:8080而不是laravel.dev:8080,因为laravel.dev是域名,这里需要绑定所有IP的8080端口 - 如果你暂时不需要HTTPS访问,可以先注释掉SSL相关配置,先确保HTTP能正常运行(后续再配置HTTPS也不迟)
修改后的虚拟主机配置如下:
<VirtualHost *:8080> DocumentRoot "C:/xampp/htdocs/laravel/backend/public/" ServerName laravel.dev # 暂时注释SSL配置,先调试HTTP访问 # SSLEngine On # SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/server.crt" # SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/server.key" <Directory "C:/xampp/htdocs/laravel/backend/public/"> Options Indexes FollowSymLinks DirectoryIndex index.php AllowOverride All Require all granted </Directory> </VirtualHost>
修改后记得重启Apache服务。
3. 验证hosts文件映射是否生效
有时候hosts文件修改后不会立即生效,或者编辑时没有权限导致保存失败:
- 打开命令提示符(CMD),输入
ping laravel.dev - 如果返回的IP不是
127.0.0.1,说明映射没生效:- 右键点击记事本,选择「以管理员身份运行」,重新打开
C:\Windows\System32\drivers\etc\hosts文件,确认你的映射行存在:127.0.0.1 laravel.dev - 保存后,在CMD里输入
ipconfig /flushdns刷新DNS缓存
- 右键点击记事本,选择「以管理员身份运行」,重新打开
4. 检查Laravel的.htaccess文件
public目录下的.htaccess是路由解析的关键,确保这个文件存在且内容正确:
- 打开
C:\xampp\htdocs\laravel\backend\public\.htaccess,默认Laravel的内容应该是:<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule> - 如果文件丢失,可以直接复制上面的内容创建新的
.htaccess文件
5. 清除Laravel缓存(可选)
本地开发环境缓存可能会影响路由解析,执行以下命令清除缓存:
打开项目根目录(C:\xampp\htdocs\laravel\backend),在命令提示符里执行:
php artisan cache:clear php artisan route:clear
按照上面的步骤操作后,再访问laravel.dev:8080应该就能正常显示路由内容了。
内容的提问来源于stack exchange,提问作者Saul Montilla
相关产品推荐
相关产品推荐

