Перенаправить POST htaccess - PullRequest
       17

Перенаправить POST htaccess

7 голосов
/ 09 января 2011

Этот вопрос очень похож на: Можно ли перенаправить данные публикации? (спросил слушатель), но этот ответ, похоже, не работает для меня.

У меня есть форма:

<form action="http://a.test.com/contact" name="contact" method="post">

и внутри домена дополнения (test.com - это дополнение), есть поддомен (a.), А внутри него у меня есть файл item.php и .htaccess

Мой htaccess выглядит следующим образом:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php 

# Forces a trailing slash to be added
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

#normal rewrites
RewriteRule ^[~|-]?([a-zA-Z0-9]+)[/]*$ item.php?user=$1 [NC,L]

примечание: я оставил его как [NC, L], потому что, когда я изменил его на [NC, P], это дает мне 500 ошибок сервера.

и мой item.php

<code><?php
echo "<pre>";
print_r($_POST);
echo "
";

и независимо от того, что содержится в форме, $ _POST будет пустым ... однако, если я сделаю http://a.test.com/item.php?user=contact в качестве действия.

все идет хорошо. POSTing пропускает htaccess, и решение для SO, похоже, не работает.

Заранее спасибо

1 Ответ

20 голосов
/ 09 января 2011

Ваше правило "добавить косую черту" вызывает перенаправление заголовка:

 [R=301,L]

перенаправление заголовка сбрасывает значения POST.

Вам придется удалить это правило или отключить его для отправки POST:

# Forces a trailing slash to be added

RewriteCond %{REQUEST_METHOD}  !=POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
...