2015-01-02 57 views
1

我正在使用PHP-login.net框架進行登錄,我將該文件夾託管在另一個網站的子文件夾中,並使用htaccess將其重定向到主域I爲該子文件夾創建。設置htacces重寫規則後表單發佈數據

RewriteCond %{HTTP_HOST} ^(www.)?decathlon.ga$ [NC] 
RewriteCond %{REQUEST_URI} !^/decathlon/.*$ 
RewriteRule ^(.*)$ /decathlon/$1 [L] 

它工作得很好,當我有它只是作爲saint57records.com/decathlon但是當我加入重定向POST數據不是從這個形式發送。但是,所有鏈接都應該重定向。

<form action="http://decathlon.ga/login/login" method="post"> 
<label>Username (or email)</label> 
<input type="text" name="user_name" required /> 
<label>Password</label> 
<input type="password" name="user_password" required /> 
<input type="checkbox" name="user_rememberme" class="remember-me-checkbox" /> 
<label class="remember-me-label">Keep me logged in (for 2 weeks)</label> 
<input type="submit" class="login-submit-button" /> 
</form> 

它在它的頁面上執行此檢查,並給我錯誤,POST是空的。下面

if (!isset($_POST['user_name']) OR empty($_POST['user_name'])) { 
    $_SESSION["feedback_negative"][] = FEEDBACK_USERNAME_FIELD_EMPTY; 
    return false; 
} 

http://decathlon.ga/login/login部分所以一切都重定向到正確的地方,但也有人理解可能會因爲重定向的POST數據回事?

+1

你不是張貼到您要重定向到該頁面。 –

+0

那麼,如何發佈到正確的頁面,因爲表單將進入正確的頁面,POST數據是否正在其他地方? –

+0

附註;您可能希望使用'||'而不是'OR' – Core

回答

1

您顯示的規則是沒有做任何外部重定向,它只是一個內部重寫。因此POST數據將在此路由到/decathlon目錄期間保留保留。我建議你檢查是否存在執行此重定向的其他規則。如果login/login是真實目錄,則外部重定向也可能由其他模塊引起,如mod_dir

作爲替代你甚至可以在表單的操作路徑直接使用/decathlon/避免這種重寫:

<form action="http://decathlon.ga/decathlon/login/login" 
2

這並不是100%清楚你想要做什麼,但是你將所有不匹配^/decathlon/.*$/decathlon/$1的東西重定向。這意味着http://decathlon.ga/login/login重定向到http://decathlon.ga/decathlon/login/login,這似乎是錯誤的。

您需要重寫第二個RewriteCondRewriteRule,但不可能在沒有更多信息的情況下猜出它們應該是什麼。

+0

這是託管在http://saint57records.com/decathlon,所以當我有一個鏈接從decathlon.ga進來,我希望它使用該子目錄 –

+0

那麼,你有的規則是沒有真正的工作。使用相對URL可能會更好。此外,在您的問題中,您需要做的更清晰一些,以幫助您確定需要做什麼。 –

+0

但是重寫規則的工作原理完全符合我的要求,所有的URL都會按照他們應有的位置進行。我的問題是POST數據沒有被保留 –