2011-08-09 63 views
0

我有2個域mydomain.commydomain.org。該網站的生活在mydomain.org所以我想任何嘗試mydomain.com解決mydomain.orgmod_rewrite條件和規則影響POST變量的方式不好

以下mod_rewrite規則適用於某種程度。

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^mydomain\.com$ 
RewriteRule^http://mydomain.org%{REQUEST_URI} [L,R=301] 

我實現它,測試它後,我覺得這是做我需要到我提交了形式方法=「郵報」的一切。

出於某種原因,這mod_rewrite的象垃圾一樣清除我的_POST瓦爾

我從mydomain.org單獨工作(這是我想要的網站從以解決TLD並在我提交了表格)。

有沒有人知道我的條件和規則的調整不會失去_POST變量?


我發現了一些有趣的東西。我在Firefox中插入HTTP Live Headers插件。當我使用mod_rewrite時,我得到一個「HTTP/1.1 404 Not Found」,當我關閉mod_rewrite時,我得到一個「HTTP/1.1 200 OK」。使用相同的頁面和PHP代碼。同樣,當我關閉mod_rewrite指令時,_POST數據就會通過。當我打開mod_rewrite指令時,_POST數據不會通過。

mod_rewrite的已關閉

http://dashausmuseum.org/subscribe.html 

POST /subscribe.html HTTP/1.1 
Host: dashausmuseum.org 
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip, deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Connection: keep-alive 
Referer: http://dashausmuseum.org/subscribe.html 
Cookie: __utma=74430599.461726749.1312575846.1312897084.1312899646.5; __utmz=74430599.1312575846.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=1.480711209.1312899756.1312979975.1312981669.5; __utmz=1.1312981669.5.5.utmcsr=dashausmuseum.com|utmccn=(referral)|utmcmd=referral|utmcct=/directions.html; __utmb=1.9.10.1312981669; PHPSESSID=7f4a74d7fde56cf901aa85511410b7f6; __utmc=1 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 60 
email=abc&firstName=&lastName=&address=&phone=&submit=Submit 

HTTP/1.1 200 OK 
Date: Wed, 10 Aug 2011 13:18:31 GMT 
Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.3.4 
X-Powered-By: PHP/5.3.4 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Content-Length: 5420 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html 

mod_rewrite的已打開

http://dashausmuseum.org/subscribe.html 

POST /subscribe.html HTTP/1.1 
Host: dashausmuseum.org 
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip, deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Connection: keep-alive 
Referer: http://dashausmuseum.org/subscribe.html 
Cookie: __utma=74430599.461726749.1312575846.1312897084.1312899646.5; __utmz=74430599.1312575846.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=1.480711209.1312899756.1312979975.1312981669.5; __utmz=1.1312981669.5.5.utmcsr=dashausmuseum.com|utmccn=(referral)|utmcmd=referral|utmcct=/directions.html; __utmb=1.10.10.1312981669; PHPSESSID=7f4a74d7fde56cf901aa85511410b7f6; __utmc=1 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 60 
email=xyz&firstName=&lastName=&address=&phone=&submit=Submit 

HTTP/1.1 404 Not Found 
Date: Wed, 10 Aug 2011 13:20:32 GMT 
Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.3.4 
X-Powered-By: PHP/5.3.4 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Content-Length: 5329 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html 

有誰看到在HTTP頭中,給出了一個線索是怎麼回事什麼?

+0

有沒有人看到任何關於3個可能在語法上不正確的指令? –

回答

0

其他的東西應該是錯的,重寫規則不能破壞_POST變量。

你如何在代碼中設置/調用它們?

+0

我使用PHP作爲後面的代碼(將它們稱爲$ _POST ['element']等)。但有趣的是,當我在我的.htaccess文件中註釋(#)每個3個mod_rewrite行時,表單將與POST數據一起提交。然而,當我取消註釋3條指令時,表單不提交和POST數據。 –

+0

通過Google搜索發現了一些類似的問題。所以這似乎是一個問題。我將所有內容從_POST數據更改爲_GET數據,但仍然無法正常工作。 –

+0

如果您的表單從http://domain.org/form.html調用http://domain.com/action.php,則可能是跨域安全問題。當您從.org/form.html中調用.org/action.php時會發生這種情況嗎? – red

0

有一些關於響應301(或其他)重定向的POST事務應該發生的討論。 Here is one example作者認爲這是「雜亂」。

您的瀏覽器是否可以將POST轉換爲GET請求?在不同的瀏覽器中,行爲是否也有可能不同?

+0

我試過它既是一個_POST和FF5,IE8,Opera11,Safari5和Chrome中的_GET沒有在其中任何一個工作 –

+0

我認爲從我鏈接到的書面文件中提取的內容以及我閱讀的一些參考文獻(RFC等)提供的是:when發送POST請求的重定向響應,你完全可以使用瀏覽器來做正確的事情,正確的做法可能不是你想要的行爲。注意「HTTP規範禁止客戶端默默執行重定向交易。」 – bmb