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

XAMPP Apache环境下Laravel+Inertia路由无法识别问题求助

Laravel Inertia路由在XAMPP Apache环境无法识别的解决思路

问题背景

完成Laravel训练营的chirps项目后,使用artisan serve运行一切正常,但切换到XAMPP的Apache环境时,根路由能正常加载app.blade.php,但登录/注册等Inertia路由无法被识别。当前Apache虚拟主机配置如下:

<VirtualHost *:80>
    DocumentRoot "{path}/public"
    ServerName {projectName}.local
    ServerAlias {projectName}.local
    <Directory {path}/public>
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>

解决步骤

  • 修正虚拟主机的AllowOverride配置
    Apache默认的AllowOverride none会禁用.htaccess文件的重写规则,而Laravel依赖public/.htaccess将所有请求转发到index.php(包括Inertia路由)。将虚拟主机配置中的AllowOverride none改为AllowOverride All:

    <VirtualHost *:80>
        DocumentRoot "{path}/public"
        ServerName {projectName}.local
        ServerAlias {projectName}.local
        <Directory {path}/public>
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    
  • 启用Apache的mod_rewrite模块
    打开XAMPP的Apache配置文件httpd.conf,找到以下行并移除前面的注释符号#:

    #LoadModule rewrite_module modules/mod_rewrite.so
    

    修改后保存文件,重启Apache服务。

  • 检查public/.htaccess文件
    确认项目public目录下存在.htaccess文件,且包含正确的重写规则。如果文件缺失,手动创建并添加以下内容:

    <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>
    
  • 验证本地hosts配置
    打开Windows系统的C:\Windows\System32\drivers\etc\hosts文件,确认已添加以下解析规则(替换{projectName}为你的项目名称):

    127.0.0.1 {projectName}.local
    

    保存文件后,刷新DNS缓存(可通过命令行执行ipconfig /flushdns)。

完成以上步骤后,重启Apache服务,再次访问项目域名,Inertia路由应该能正常识别。

内容的提问来源于stack exchange,提问作者Stefan Harvey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:35:20