Как обратиться к php файлу?

Есть приложение на React. Нужно с формы отправить данные на email. Не могу понять, как правильно обратиться к уже готовому файлу на php. Постоянно при использовании Ajax в консоли ошибка "POST ...sitename/mail.php 405"

Как правильно обратиться к php файлу? Помещал его и в public, и рядом с самим файлом.

php файл:

    <?php
    $method = $_SERVER['REQUEST_METHOD'];
    $c = true;
    if ( $method === 'POST' ) {

    $project_name = trim($_POST["project_name"]);
    $admin_email  = trim($_POST["admin_email"]);
    $form_subject = trim($_POST["form_subject"]);
    
    foreach ( $_POST as $key => $value ) {
        if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
            $message .= "
            " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
                <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
                <td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
            </tr>
            ";
        }
    }
    } else if ( $method === 'GET' ) {

    $project_name = trim($_GET["project_name"]);
    $admin_email  = trim($_GET["admin_email"]);
    $form_subject = trim($_GET["form_subject"]);

    foreach ( $_GET as $key => $value ) {
        if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
            $message .= "
            " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
                <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
                <td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
            </tr>
            ";
        }
    }
    }

    $message = "<table style='width: 100%;'>$message</table>";

    function adopt($text) {
    return '=?UTF-8?B?'.Base64_encode($text).'?=';
    }

    $headers = "MIME-Version: 1.0" . PHP_EOL .
    "Content-Type: text/html; charset=utf-8" . PHP_EOL .
    'From: '.adopt($project_name).' <'.$admin_email.'>' . PHP_EOL .
    'Reply-To: '.$admin_email.'' . PHP_EOL;

    mail($admin_email, adopt($form_subject), $message, $headers );
    }

элемент React с формой:

    class FeedbackForm extends Component {
    componentDidMount() {
        if(FeedbackForm.defaultProps.prefferedLinkMethod !== this.props.prefferedLinkMethod)
            this.setState({prefferedLinkMethod: this.props.prefferedLinkMethod})

        //E-mail Ajax Send
        $("form").submit(function() { //Change
            console.log(this); //delete

            var th = $(this);
            $.ajax({
                type: "POST",
                url: "mail.php", //Change
                data: th.serialize()
            }).done(function(response) {
                console.log("response: ", response)
                alert("Thank you!");
                setTimeout(function() {
                    // Done Functions
                    th.trigger("reset");
                }, 1000);
            }).catch((error) => {
                console.log("Something went wrong with Ajax", error)
            });

            return false;
        });
    }

    render() {
        return(
            <form>
                {/* Hidden Required Fields*/}
                <input type="hidden" name="project_name" value="name site" />
                <input type="hidden" name="admin_email" value="[email protected]" />
                <input type="hidden" name="form_subject" value="where form" />
                {/* <!-- END Hidden Required Fields --> */}

                <input type="text" name="name" />
                <input type="text" name="telephone" />
                <input type="text" name="email"  />
                <button >Отправить</button>
            </form>
        )
    }
    }

Ответы (1 шт):

Автор решения: Владимир Говоров

Пользователь vanesicks по-сути, дал ответ на вопрос. Файлы .htaccess не поддерживаются на хостинге vercel. Там в качестве файла конфигурации нужно будет использовать vercel.json. Вот ссылка на документацию по этому поводу: vercel.htaccess

→ Ссылка