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

Laravel 10根路由无法接收POST数据问题求助

根路由无法获取POST数据的解决方案

针对你遇到的Laravel 10根路由无法获取POST数据、仅生产环境子目录部署出现问题的情况,可尝试以下解决步骤:

  • 调整.htaccess规则适配子目录
    生产环境部署在子目录下,默认的Laravel .htaccess可能未正确适配路径。修改项目根目录的.htaccess文件,添加RewriteBase指定子目录路径:

    <IfModule mod_rewrite.c>
        RewriteEngine On
        # 替换为你的实际子目录路径,比如/app/project/
        RewriteBase /app/project/
        RewriteRule ^(.*)$ public/$1 [L]
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    
  • 验证符号链接的权限与路径
    检查符号链接public -> public_html/app/project的有效性:

    • 使用ls -l确认链接指向的是正确的绝对路径,避免相对路径引发的访问问题
    • 确保Apache运行用户(如www-data)拥有该链接及目标目录的读写权限,可执行chown -R www-data:www-data /path/to/your/project设置权限
  • 修正.env中的APP_URL配置
    将.env文件中的APP_URL设置为包含子目录的完整生产环境URL,例如:

    APP_URL=https://yourdomain.com/app/project
    

    这能确保Laravel生成的表单action和路由地址正确,避免POST请求发送到错误路径。

  • 检查Apache目录配置
    在Apache虚拟主机配置中,确保子目录开启了AllowOverride All,让.htaccess规则生效:

    <Directory /var/www/html/public_html/app/project>
        AllowOverride All
        Require all granted
    </Directory>
    

    修改后重启Apache服务。

  • 排查CSRF验证问题(可选)
    虽然其他POST路由正常,但可临时在app/Http/Middleware/VerifyCsrfToken.php中将根路由加入排除列表测试:

    protected $except = [
        '/',
    ];
    

    若测试有效,需确保表单中正确包含@csrf指令,或检查CSRF令牌的生成与提交是否匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:05:20