Я пытаюсь отправить форму по URL-адресу "localhost/login". Внутри моего каталога входа у меня есть файл index.php с кодом, который я использую для отладки работы сообщения:
<?php
echo $_POST['username'];
?>
У меня есть файл .htaccess в моем каталоге входа:
RewriteEngine on
RewriteRule ^. index.php [L]
Проблема в том, что когда я отправляю сообщение на localhost/login, мой firebug показывает, что начальный POST проходит, но затем перенаправляется на login.php как запрос GET без каких-либо переменных POST...
POST http://localhost/login?password=test_password&remember=true&username=test_username 301 Перемещено Постоянно
ПОЛУЧИТЬ http://localhost/login/ 200 OK
Любые советы были бы замечательными.
Спасибо
Ответ 1 · рейтинг 1 · Erik Čerpnjak
У меня есть условие в моем файле .htaccess:
RewriteBase /
RewriteCond %{HTTP_HOST} !^www(.*)
RewriteRule ^(.*) http://www.%{HTTP_HOST}%{REQUEST_URI}
который перезаписывает любые ссылки без префикса "www". Как это:
http://mysite.com to http://**www**.mysite.com
И это была проблема, которая у меня была:
в моей форме я забыл поставить "www", поэтому мой массив POST был пуст.
Поместите www в форму следующим образом:
action="http://www.mysite.com/login"
вместо:
action="http://mysite.com/login"
исправил проблему для меня.
Ответ 2 · Artem Russakovskii
Основываясь на моем исследовании, POST следует разрешить переписывать и выводить как POST, любая проблема, вероятно, связана с чем-то еще, что идет не так, как с вашим кодом.
Кстати, в общем случае, чтобы параметры GET не удалялись, используйте QSA директива:
[QSA,L]