Условия mod_rewrite и правила плохо влияют на POST-переменные - PullRequest
0 голосов
/ 09 августа 2011

У меня есть 2 домена mydomain.com и mydomain.org.Сайт живет на mydomain.org, поэтому я хочу, чтобы любая попытка mydomain.com перешла на mydomain.org.

Следующее правило mod_rewrite, работающее до определенной степени.

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

После того, как яреализовал его и протестировал, я чувствовал, что он делал все, что мне было нужно, пока я не отправил форму с методом = "post".

По какой-то причине этот mod_rewrite удаляет мои _POST vars

Я работаюисключительно с mydomain.org (который является доменом верхнего уровня, с которого я хочу разрешить сайт и откуда я отправил форму).

Кто-нибудь знает о корректировке моего состояния и правила, чтобы не потерять переменные _POST?


Я определил что-то интересное.Я подключил надстройку HTTP Live Headers в Firefox.Когда я использую 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 что-нибудь, что дает подсказку о том, что происходит?

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Существует некоторое обсуждение того, что должно произойти с транзакцией POST в ответ на 301 (или другое) перенаправление. Вот один пример , где автор предполагает, что он "грязный".

Возможно ли, что ваш браузер конвертирует POST в запрос GET?Возможно ли поведение в разных браузерах по-разному?

0 голосов
/ 10 августа 2011

Что-то еще должно быть не так, правила переписывания не могут уничтожить переменные _POST.

Как вы устанавливаете / называете их в своем коде?

...