2012-04-03 40 views
1

我在网上搜索了很多,但找不到任何解决方案。 我有一个.htaccess文件,它将我的查询字符串重写到GET变量中。 这工作绝对好。

当谈到POST变量时,这是我第一次遇到这个问题。 我已经在不同的服务器上使用这个.htaccess文件很多次,但现在我的客户端服务器中有一个不想工作。 当我发布表单时,整个POST变量是空的......我将发布我的.htaccess文件,任何帮助表示赞赏。

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine on 
RewriteBase/
RewriteRule ^pages.*$ /error/404 [L] 
RewriteRule ^classes.*$ /error/404 [L] 
RewriteRule ^templates.*$ /error/404 [L] 
RewriteRule ^common.*$ /error/404 [L] 

RewriteRule ^([A-Za-z0-9-_]+)/?$ /?p=$1&s=index&a=index&n=index&%{QUERY_STRING} [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ /?p=$1&s=$2&a=index&n=index&%{QUERY_STRING} [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ /?p=$1&s=$2&a=$3&n=index&%{QUERY_STRING} [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ /?p=$1&s=$2&a=$3&n=$4&%{QUERY_STRING} [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ /?p=$1&s=$2&a=$3&n=$4&o=$5&%{QUERY_STRING} [L] 

ErrorDocument 404 /error/404.php 

形式看起来像这样

 <div class="login"> 
      <form action="/administrator" method="post"> 
       <table cellspacing="0" cellpadding="0" width="100%"> 
        <tr> 
         <td>Username</td> 
         <td><input type="text" name="username" /></td> 
        </tr> 
        <tr> 
         <td>Password</td> 
         <td><input type="password" name="passwort" /></td> 
        </tr> 
        <tr> 
         <td>&nbsp;</td> 
         <td><input type="submit" value="Anmelden" /></td> 
        </tr> 
       </table> 
      </form> 
     </div> 

,登录php文件这样

<?php 
session_start(); 

if(isset($_SESSION['login']) && $_SESSION['login'] === TRUE) { 
    header('Location: /administrator'); 
    exit; 
} 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 

    $username = $_POST['username']; 
    $passwort = $_POST['passwort']; 

    $hostname = $_SERVER['HTTP_HOST']; 
    $path  = dirname($_SERVER['PHP_SELF']); 

    if ($username == 'xxx' && $passwort == 'xxx') { 
     $_SESSION['login'] = true; 
     header('Location: /administrator'); 
     exit; 
    } 
} 
?> 
+0

你可以在这里放置'var_dump($ _ POST)'输出吗? – undone 2012-04-03 10:05:07

+0

$ _POST是一个空的数组...绝对没有在那里... – schurtertom 2012-04-03 11:44:38

+0

你可以把重写日志在这里吗? – undone 2012-04-03 11:56:27

回答

0

你重写规则是活跃GET,不POST。

  1. 检查,如果您的/administrator脚本(你为什么不直接调用它作为administrator.php?)被调用或创建的访问规则。检查访问日志以确保在发布时访问脚本。

  2. 添加类似:

    • RewriteRule ^administrator administrator.php [L]
    • RewriteRule ^administrator pathtoyourscript/administrator.php [L]
  3. 检查无会话,以​​确保它不会与它交互严重。

您可以使用var_dump($ _ POST)来显示所有数据。如果没有显示,你没有调用正确的脚本或者你的路径错误。