2012-04-03 37 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)來顯示所有數據。如果沒有顯示,你沒有調用正確的腳本或者你的路徑錯誤。