【发布时间】:2017-02-21 02:38:40
【问题描述】:
我已经看到了很多关于这个问题的答案,但由于某种原因,没有一个对我有用。我在网站上有一个表单,需要将数据发布到 php 文件(然后将发送一个 PHPMailer)。
我希望网站强制使用 WWW 并从 URL 中删除 .php 扩展名。在调试此问题时,我已经对我的 .htaccess 文件进行了一些更改。
我还注意到,当我访问我网站上的某个页面时,例如http://example.com.au/contact,那么 WWW 不会被强制到 URL 的开头。但是如果我转到http://example.com.au(索引),那么它将更改为http://www.example.com.au。如何更改 .htaccess 以便我可以让所有子页面强制 WWW,同时不删除 POST 值?
我当前的 .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]
我最初有一个 R=301 标记和第二个 [L] 的 RewriteRule,但显然这是丢失 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>
我已经尝试了表单操作,无论有没有 .php 扩展名,有无完整 URL,都返回空数组 var_dump($_POST)。
表单中的所有输入都有name 标签和id 标签。
jQuery(带验证)脚本:
$('#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);
?>
我真的希望有人可以帮助我,我正在为这个问题失去理智!
谢谢!
【问题讨论】:
标签: php jquery ajax .htaccess mod-rewrite