Livewire3子目录部署下更新请求返回404问题求助
解决Livewire 3子目录部署下POST更新请求404的问题
1. 修正.htaccess规则适配子目录
根据你的子目录位置调整规则:
- 如果
.htaccess放在子目录根目录(如htdocs/lmapnext/.htaccess),使用以下规则:
<IfModule mod_rewrite.c> RewriteEngine On # 优先转发Livewire更新请求 RewriteRule ^livewire/(.*)$ server.php?$1 [L] # 处理常规Laravel路由 RewriteRule ^(.*)$ server.php/$1 [L] </IfModule>
- 如果
.htaccess放在网站根目录(不是子目录),规则要匹配子目录前缀:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^lmapnext/livewire/(.*)$ lmapnext/server.php?$1 [L] RewriteRule ^lmapnext/(.*)$ lmapnext/server.php/$1 [L] </IfModule>
2. 调整Livewire核心配置
打开config/livewire.php,修正以下配置项:
asset_url:设置为'/lmapnext/livewire'(无需手动拼接livewire.js,框架会自动处理资源路径)- 确认
middleware_group配置为'web',保证中间件能正确解析子目录请求
3. 直接注册Livewire路由(替代HandleRequests修改)
在App/Providers/AppServiceProvider.php的boot方法中,手动指定Livewire的更新和脚本路由,避免自动生成路径错误:
use Livewire\Livewire; use Illuminate\Support\Facades\Route; public function boot() { // 配置Livewire更新请求路由 Livewire::setUpdateRoute(function ($handle) { return Route::post('/lmapnext/livewire/update', $handle); }); // 配置Livewire脚本资源路由 Livewire::setScriptRoute(function ($handle) { return Route::get('/lmapnext/livewire/livewire.js', $handle); }); }
4. 清除缓存并重启服务
执行以下命令彻底清除缓存,确保配置生效:
php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear
之后重启XAMPP的Apache服务,让新的.htaccess规则和配置生效。
5. 验证请求路径正确性
打开浏览器开发者工具(F12),查看Livewire更新请求的URL是否为http://localhost/lmapnext/livewire/update,如果路径不符,重新检查上述配置步骤。
6. 确认Apache重写模块启用
在XAMPP的httpd.conf文件中,确保LoadModule rewrite_module modules/mod_rewrite.so一行未被注释,注释的话去掉前面的#并重启Apache。
内容的提问来源于stack exchange,提问作者TaHa
相关产品推荐
相关产品推荐

