私はこれに多くの答えを見ましたが、何らかの理由で私のために働いたことはありません。私はPHPファイルにPOSTデータを必要とするウェブサイト上にフォームを持っています(PHPMailerを送信します)。HTACCESSとAJAX POST
ウェブサイトにWWWを強制し、URLから.php拡張子を削除したいとします。私はすでにこの問題をデバッグしながら、.htaccessファイルにいくつかの変更を加えました。
私はまた、自分のウェブサイトのページに行くときに気付いたことがあります。 http://example.com.au/contact
の場合、WWWはURLの先頭に強制されません。しかし、http://example.com.au
(インデックス)に行くと、http://www.example.com.au
に変わります。どのようにして.htaccessを変更して、POST値を削除しないで、WWWを強制するためにすべてのサブページを取得することができますか?
私の現在の.htaccess:
RewriteEngine on
# Remove .php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
# Force WWW
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L]
私はもともと二RewriteRule
の[L]
でR=301
タグを持っていたが、どうやらそれは、POST値を失う原因だったので、私はそれを削除しました。私はまた、両方の一つであり、どちらのルールの前に
RewriteCond %{REQUEST_METHOD} !POST
とし、
<div class="form_container">
<form name="contactForm" id="contact_form" action="http://www.*MyURL*.com.au/scripts/contact_send" method="POST">
<div class="row">
<div>
<label for="inputFirstName">First Name: </label>
<input name="firstname" id="inputFirstName" type="text" required>
</div>
<div>
<label for="inputSurname">Surname: </label>
<input name="surname" id="inputSurname" type="text" required>
</div>
</div>
<div class="row">
<div>
<label for="inputEmail">Email: </label>
<input name="email" id="inputEmail" type="email" required>
</div>
<div>
<label for="inputPhone">Phone (optional): </label>
<input name="phone" id="inputPhone" type="tel">
</div>
</div>
<div class="row">
<div>
<input type="submit" name="submit" value="Send">
</div>
</div>
</form>
</div>
:ここ
は私のフォームの簡易版です(ブートストラップクラスなどなし) URLはすべてvar_dump($_POST)
の空の配列を返します。
フォームのすべての入力は、name
タグとid
タグの両方を持ちます。
jQueryの(検証/ W)スクリプト:
$('#contact_form').validate({
...
submitHandler: function(form){
$('.form_container').html('<div class="loader"></div>');
$('html, body').animate({scrollTop: $('#header').height()}, 500);
$.ajax({
url: form.action,
type: form.method,
data: $('#contact_form').serialize(),
success: function(data) {
$('.form_container').html(data);
}
});
}
});
バリデータが作業を行います。フォームは空の入力と共に提出しません。
は、デバッグの目的のために、私はこれにcontact_send.php
を変更しました:
<?php
var_dump($_POST);
?>
私は本当に私はこの問題に私の知恵を失うよ、誰かが私を助けることができることを願っています!
ありがとうございます!
あなたは私の救世主です。私は十分にあなたに感謝することはできません!フォームを削除する前にデータをシリアライズすることは絶対に正しいです。どうもありがとうございます! – jacobian