You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,说明映射没生效:
    1. 右键点击记事本,选择「以管理员身份运行」,重新打开C:\Windows\System32\drivers\etc\hosts文件,确认你的映射行存在:
      127.0.0.1 laravel.dev
      
    2. 保存后,在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 11:24:14