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

Laravel部署到生产服务器后联系表单报404错误求助

解决Laravel生产环境联系表单404错误

核心问题分析

本地提交后跳转至根路径的锚点/#contact,但生产环境提交后尝试访问/form#contact并返回404,说明/form这个POST路由在生产环境未被正确识别,大概率是路由配置缺失或服务器重写规则未配置导致。


具体解决步骤

1. 检查并确认路由配置

确保routes/web.php中存在指向表单处理方法的POST路由,示例代码如下:

// 替换YourController为实际的控制器类名(比如ContactController)
Route::post('/form', [YourController::class, 'store'])->name('contact.store');

推荐使用路由命名方式,同时将表单的action修改为:

<form method="post" action="{{ route('contact.store') }}#contact">

这种方式比直接使用url()更可靠,避免URL拼接错误。

2. 配置服务器重写规则

生产环境服务器需要配置重写规则,确保所有请求转发至Laravel的index.php入口文件:

  • Apache服务器:
    确认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>
    

    同时确保服务器已启用mod_rewrite模块。

  • Nginx服务器:
    在站点配置文件中添加以下规则:

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    

    配置完成后重启服务器生效。

3. 验证.env配置

检查生产环境.env文件中的APP_URL是否匹配实际域名:

APP_URL=https://academi.com

4. 确认路由注册状态

在服务器终端执行以下命令,查看已注册的路由列表,确认POST /form路由存在且关联正确的控制器方法:

php artisan route:list

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:38:09