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

Apache(XAMPP)服务器上Livewire 3.5更新报错400求助

解决Apache别名环境下Livewire 3.5点击按钮400错误的问题

问题背景

在XAMPP的Apache服务器上,通过别名/progettotest部署Laravel 11.9 + Livewire 3.5项目,页面加载正常,但点击Counter组件的加号按钮时出现400错误,使用php artisan serve内置服务器无此问题。

核心原因

Apache别名环境下,Livewire的请求路径、Laravel的APP_URL配置与实际部署路径不匹配,导致CSRF验证失败或路由无法匹配。

解决方案

1. 修正Livewire更新路由的路径

当前web.php中的更新路由缺少开头的斜杠,导致请求路径变为相对路径,需修改为:

Livewire::setUpdateRoute(function ($handle) {
    return Route::post('/progettotest/vendor/livewire/update', $handle);
});

(注意开头的/,确保路由是绝对路径)

2. 配置正确的APP_URL环境变量

在项目根目录的.env文件中,将APP_URL修改为Apache别名对应的完整URL:

APP_URL=http://localhost/progettotest

这会确保Livewire生成的请求路径、CSRF令牌的来源都与部署路径一致。

3. 调整public目录下的.htaccess配置

在public/.htaccess文件中,添加RewriteBase指令适配Apache别名路径:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
    RewriteBase /progettotest/

    # 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>

4. 清除Laravel缓存

运行以下命令清除配置和路由缓存,确保新配置生效:

php artisan config:clear
php artisan route:clear

验证

完成以上步骤后,重启Apache服务器,刷新页面再次点击Counter按钮,400错误应该会消失,组件可以正常更新数值。

内容的提问来源于stack exchange,提问作者Cristiano Narcisi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 18:05:09