2009-06-13 12 views
0

Je suis en train de soumettre un formulaire à l'URL "localhost/login". A l'intérieur de mon répertoire de connexion J'ai un fichier index.php avec le code que je utilise pour déboguer que le poste fonctionne:formulaire de post à mod_rewrite url

<?php 
echo $_POST['username']; 
?> 

Je trouve un fichier .htaccess dans mon répertoire de connexion:

RewriteEngine on 
RewriteRule ^. index.php [L] 

le problème est, quand je poste à localhost/login mon firebug montre que le POST initial passe par, mais réoriente alors login.php comme une requête GET sans variables POST ...

POST http://localhost/login?password=test_password&remember=true&username=test_username 301 Moved Perma nence

GET http://localhost/login/ 200 OK

Des conseils serait génial.

Merci

+0

D'où vient la partie login.php? Voulez-vous dire index.php? –

+0

ya désolé, il devrait être: "mais redirige ensuite vers login/index.php comme une requête GET sans aucune variable POST ..." –

Répondre

0

D'après mes recherches, POST devraient être autorisés à être réécrite et sortir comme POST, toute sorte de problème est probablement dû à autre chose qui ne va pas, comme votre code.

BTW, en général, de maintenir les paramètres GET d'être dépouillé, utilisez la directive QSA:

[QSA,L]

1

J'ai une condition dans mon fichier .htaccess:

RewriteBase/
RewriteCond %{HTTP_HOST} !^www(.*) 
RewriteRule ^(.*) http://www.%{HTTP_HOST}%{REQUEST_URI} 

qui réécrit tous les liens sans le préfixe "www". Comme ceci:

http://mysite.com to http://**www**.mysite.com 

Et qui était le problème que j'avais:

sous ma forme, je l'ai oublié de mettre le « www » et ainsi mon tableau POST était vide.

Mettre le www sous la forme comme ceci:

action="http://www.mysite.com/login" 

au lieu de:

action="http://mysite.com/login" 

résolu le problème pour moi.