Page 1 sur 1

.htaccess sans query_string

Posté : 07 juil. 2009, 12:40
par Chrysem
Bonjour à tous,

J'essaie de reprendre comme ce site : http://www.playfire/Chrysem

Le pseudo Chrysem est là sans query_string et j'aimerais savoir comment le .htaccess est configurer.

J'ai essayé plusieurs méthodes dont celles-ci :
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{QUERY_STRING} .
RewriteRule (.*) index.php?$1 [R=301,L] 
Malheureusement, cela ne marche pas...si quelqu'un peut me guider ;)

Merci d'avance pour votre aide.

Posté : 07 juil. 2009, 13:52
par momox
Allez, gros coup de main ;)
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
On redirige toute requête vers index.php, en y ajoutant le query string.
Pour récuperer ton "pseudo", tu devras utiliser $_SERVER['REQUEST_URI']
Voilap ;)

Posté : 07 juil. 2009, 14:12
par Chrysem
après avoir passer tout ton code à la moulinette google, j'ai compris à quoi servait le -d, mais pas le -f, ni QSA. (QSA = Question Sample Answer, donc en gros pour tout requête posée ?)

Si tu peux m'expliquer brièvement, je t'en serais grée ;)

Autre chose, je ne comprend pas l'usage du $_SERVER['REQUEST_URI'], car celui ne donne que le chemin du script, non?

en tout cas, merci grandement pour ton aide, j'y perd beaucoup de neurones :p

Posté : 07 juil. 2009, 14:22
par momox
Le -f sert a vérifier que l'url demandée n'est pas un fichier ;)
Le QSA sert a faire passer un éventuel query string qui aurait été fourni.
Ex:

Code : Tout sélectionner

Requête: http://www.test.com/pseudo?test=foo REQUEST_URI = /pseudo QUERY_STRING = ?test=foo
En l'occurence, avec le script que je t'ai passé, le serveur, si le query string n'est pas un dossier ou un fichier de ton serveur, renvoie la requête vers index.php.
Tu retrouveras le REQUEST_URI de la requête utilisateur dans le tableau $_SERVER et le query string coté utilisateur est repassé a index.php
Donc tu auras pour le code executé dans ton index.php les deux variables suivantes:
$_SERVER['REQUEST_URI'] = '/pseudo';
$_GET['test'] = 'foo';

Posté : 07 juil. 2009, 14:57
par Chrysem
ok merci de tes explications je comprend mieux.

par contre lorsque je veux afficher le $_SERVER['REQUEST_URI'], cela m'affiche /index.php et non le pseudo

voici ton code que j'ai adapté :
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://trophycard.playzine.fr/index.php [QSA,L]
Je n'ai pas laissé index.php seul sur la dernière ligne, car erreur 500, mais en rajoutant l'url complète le serveur ne me renvoi plus d'erreur. J'aurais peut etre du préciser que cet url est un sous domaine de mon site.

Du coup lorsque je tape : http://trophycard.playzine.fr/Pseudo, une redirection vers l'index.php s'effectue et le $_SERVER['REQUEST_URI'] m'affiche /index.php...

Je ne comprend pas mon erreur, pourrais tu être plus explicite stp? (mon cerveau est un peu off, les vacances sont très proches...)

Merci grandement d'avance

Posté : 07 juil. 2009, 15:09
par Victor BRITO
(QSA = Question Sample Answer, donc en gros pour tout requête posée ?)
Non, QSA = Query String Append.

Posté : 07 juil. 2009, 16:17
par Chrysem
merci Victor pour l'info ;)

je pense m'être mal exprimé car en rajoutant ?login=$1 après le index.php, en tapant l'url de tel sorte : http://trophycard.playzine.fr/Pseudo, le serveur me redirige vers http://trophycard.playzine.fr/index.php?login=Pseudo

Sauf que je souhaite garder l'url http://trophycard.playzine.fr/Pseudo, et que mon serveur l'interprête correctement.

J'espère avoir été plus clair...

Posté : 07 juil. 2009, 16:31
par Victor BRITO
Essaie le .htaccess suivant :

Code : Tout sélectionner

RewriteEngine on RewriteRule ^([0-9a-zA-Z]+)$ /index.php?login=$1 [L]

Posté : 07 juil. 2009, 16:42
par Chrysem
un grand merci à toi Victor (momox aussi) car cela fonctionne !

merci à vous 2 de votre aide ;)