2014-01-16 16 views
3

爲了在我的應用程序保持一致,我需要所有的請求包括www所以我使用.htaccess文件是這樣的:的Apache的.htaccess重定向刪除表單數據

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^(www\.) [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,NC,L] 
</IfModule> 

它工作得很好。然而,當POST請求發送時沒有www表單數據被剝離出。這是預期的嗎?有沒有辦法糾正這個問題?

回答

3

具有狀態(如301,302或303)的重定向響應在我遇到的每個瀏覽器中始終以GET方式處理。因此,客戶端瀏覽器會看到重定向的POST請求,並向重定向響應中提供的URL發出GET請求。請參閱我對以下問題的回答以及其他人添加的評論以瞭解詳細信息,以便您可以優雅地解決此問題: Apache 301 Redirect and preserving post data

+0

謝謝Ray。我的問題與瀏覽器無關,因爲我以編程方式發出API請求。你對301重定向所說的話是否適用於任何代理?我的大部分測試都是使用Chrome Postman插件完成的,但在生產中它將來自運行在服務器上的Java應用程序。 – emersonthis

+0

我剛剛閱讀您的其他帖子,聽起來像301將大家轉換爲GET請求。瀏覽器或沒有瀏覽器。 – emersonthis

+0

@SDP它完全取決於客戶端代理,但瀏覽器會按照所述自動重定向。某些客戶端和庫(如捲曲,wget等)允許您不自動遵循重定向。您正在使用的java rest庫可能被配置爲在發佈帖子時不自動重定向,並且當您點擊重定向構建新的帖子到新的URL時(假定該資源接受發佈請求)。請記住:實際的重定向處理髮生在客戶端。所有的服務器都會返回一個URL和30x狀態碼。 – Ray