сообщение формы для URL-адреса mod_rewrite

Я пытаюсь отправить форму по 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

Любые советы были бы замечательными.

Спасибо


person Community    schedule 13.06.2009    source источник
comment
Откуда взялась часть login.php? Вы имеете в виду index.php?   -  person Artem Russakovskii    schedule 13.06.2009
comment
извините, так и должно быть: но затем перенаправляется на login/index.php как GET-запрос без каких-либо POST-переменных...   -  person    schedule 13.06.2009


Ответы (2)


У меня есть условие в моем файле .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"

исправил проблему для меня.

person Erik Čerpnjak    schedule 09.11.2010

Основываясь на моем исследовании, POST следует разрешить переписывать и выводить как POST, любая проблема, вероятно, связана с чем-то еще, что идет не так, как с вашим кодом.

Кстати, в общем случае, чтобы параметры GET не удалялись, используйте QSA директива:

[QSA,L]

person Artem Russakovskii    schedule 13.06.2009