2013-07-15 89 views
1

我是htaccess的新手,我通過AJAX遇到POST值問題。htaccess和AJAX POST值

在我開始使用htaccess之前一切正常,所以它可能是一個簡單的修復。

我的帖子值正在通過AJAX丟失,我認爲這是因爲我已經重寫了網址以使用htaccess刪除後綴(php)。我在正常腳本(即登錄)上通過添加重寫條件解決了POST值問題。

請參閱下面我的代碼:

# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

## hide .php extension 
# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L,NC] 

## To internally redirect /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_URI}.php [L] 

RewriteCond %{REQUEST_METHOD} !POST 
RewriteRule ^index.php/[L,R=301] 

回答

0

的問題是你的R標籤。這會導致重定向。不幸的是,早期的Web瀏覽器沒有遵循HTTP規範,而是使用GET來請求它們提供的新URL。這導致HTTP被改變(例如引入了308代碼)。

基本上,除了GET請求外,您無法可靠地發出外部重定向。改爲使用內部重定向(重新寫入)。即,從您的第一個RewriteRule結束時,請將R標籤取消。

+0

謝謝尼古拉斯,但我現在正在收到以下錯誤:[error] [client :: 1]由於可能的配置錯誤,請求超過了10個內部重定向的限制。如果需要,使用'LimitInternalRecursion'來增加限制。使用'LogLevel debug'來獲得回溯。 – Jimbob

+0

所以你有一個無限循環。首先,你要剝離'.php'擴展名,做一個重定向,然後你重新添加它,然後再做一次重定向。您不需要添加.php擴展名,所以請刪除該部分。相反,使用'Options + MultiViews'打開MultiView,Apache將爲您找到PHP文件。 –

+0

謝謝,解決了這個問題! – Jimbob