XAMPP Apache环境下Laravel+Inertia路由无法识别问题求助
问题背景
完成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

