mod_rewrite
没有传递我的$ _POST变量,GoDaddy向我保证这是因为我需要改变Apache 2.4的设置。
这是我的代码:
的.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
的index.php
<?php
$q = explode("/", $_SERVER['REQUEST_URI']);
if ($q[1] != "") {
switch($q[1]) {
case "test":
include("test.php");
break;
}
}
?>
test.php的的
<?php
if (isset($_POST["submitButton"])) {
echo "Submitted";
} else {
echo "Not submitted";
}
?>
<form method="post">
<input type="submit" name="submitButton">
</form>
通过/ test提交时,显示“未提交” 通过/test.php提交时,显示“已提交”。
我在另一台主机上尝试过这种确切的设置,它运行正常。
为了让它发挥作用需要改变什么?
答案 0 :(得分:1)
在test.php
的顶部试试这个。然后,如果这不起作用,请在index.php
的顶部尝试。
<?php
$rebuiltPost = array();
parse_str(file_get_contents("php://input"),$rebuiltPost);
$_POST = $rebuiltPost;
?>
答案 1 :(得分:0)
发生这种情况的原因是,当URL不是可识别的文件时,GoDaddy的设置将用户指向missing.html
。
修复方法是通过将.htaccess
添加到您自己的Options -Multiviews
文件来忽略GoDaddy的.htaccess
文件。