Этот вопрос очень похож на: возможно ли перенаправить почтовые данные? (спросил ухаживатель), но этот ответ, похоже, не работает для меня.
У меня есть форма:
<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]
note: Я оставил его как [NC, L], потому что, когда я изменил его на [NC, P], он дал мне ошибку 500 серверов.
и мой item.php
<?php echo "<pre>"; print_r($_POST); echo "</pre>";
и независимо от того, что содержит форма, $ _POST пуст … однако, если я делаю http://a.test.com/item.php?user=contact как действие.
Все хорошо. POSTing пропускает htaccess, и решение на SO не работает.
заранее спасибо
Правило «добавить конечную косую черту» заставляет перенаправить заголовок:
[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]