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

生产环境下React表单POST请求返回index.html问题求助

问题:React联系表单部署后POST请求返回index.html

我开发了一个基于React的简易联系表单,搭配PHP接口实现给填表用户发送邮件的功能。本地环境运行正常,可正常发送邮件,但部署到生产环境后,表单的POST请求返回的是React项目的index.html文件。

React代码

import React, { Fragment, useState } from 'react';
import axios from 'axios';

const Form = () => {
    const [userData, setUserData] = useState({
        name: '',
        entity: '',
        email: '',
        phone: '',
        message: ''
    })

    const handleInputChange = (event) => {
        setUserData({
            ...userData,
            [event.target.name]: event.target.value
        })
    }

    const sendData= (event) => {
        event.preventDefault();

        const url = 'https://mydomain.org.co/api_contact/?contact=1';

        axios.post(url, userData)
            .then(response => {
                let data = response.data;
                console.log("data:", data);
            })

    }

    return (
        <Fragment>
           {/* ... FORM CODE */}
        </Fragment>
    );
}

export default Form;

服务器public_html目录结构

public_html目录下包含api_contact文件夹(存放PHP接口文件)、React项目的静态资源文件夹(如css、js),以及index.html、.htaccess等文件。

.htaccess文件内容

RewriteOptions inherit

<IfModule mime_module>
  AddHandler application/x-httpd-ea-php56 .php .php5 .phtml
</IfModule>

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]
解决方案

问题根源在.htaccess的Rewrite规则:当前规则会把所有不存在的文件请求都重定向到index.html,包括你的PHP接口请求——服务器没有优先处理api_contact目录下的PHP文件,反而被React的路由重写规则覆盖了。

可以按以下步骤修复:

  1. 修改Rewrite规则,排除API目录
    在现有规则前添加一条规则,让api_contact目录下的请求直接访问实际文件,不再走React的重写逻辑:
RewriteOptions inherit

<IfModule mime_module>
  AddHandler application/x-httpd-ea-php56 .php .php5 .phtml
</IfModule>

Options -MultiViews
RewriteEngine On
# 新增:匹配api_contact目录的请求,直接跳过后续重写
RewriteRule ^api_contact/ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]

- [L]表示匹配到该规则后立即停止后续Rewrite处理,直接返回请求的文件内容。

  1. 检查PHP接口的可用性
  • 确认api_contact文件夹下存在对应PHP文件(比如index.php),文件权限设为644确保服务器能读取。
  • 验证PHP版本兼容性:当前配置的是PHP5.6,确保接口代码没有使用该版本不支持的语法。
  1. 验证请求路径
    直接在浏览器访问https://mydomain.org.co/api_contact/?contact=1,确认返回的是PHP接口的响应内容,而非React的index.html。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:15:29