Page 1 sur 1

URL rewrite simple

Posté : 10 févr. 2012, 23:41
par foxxy
Bonsoir!
Je ne sais pas comment configurer mon fichier .htaccess.

J'aimerai que si un membre tape son pseudo
www.domaine.com/sylvain

Ca fasse:
www.domaine.com/modelbook.php?id=sylvain

Merci d"avance!

Re: URL rewrite simple

Posté : 11 févr. 2012, 10:58
par Ryle
Ta règle n'est pas si simple et dépend de la structure de ton site... en fait basiquement il suffit de définir un masque de recherche qui correspond aux chaines que tu recherches, qui capture la partie qui t'intéresse et ce par quoi tu veux le remplacer :

Code : Tout sélectionner

RewriteRule masque_de_recherche modelbook.php?id=$1
La difficulté vient dans la définition du masque_de_recherche qui doit transformer une url de type /sylvain mais qui ne doit pas modifier /modelbook... ni /un_dossier_de_ton_site

Donc en fonction de la structure de ton site, il faut définir un masque d'expression régulière qui exclura par exemple de la redirection les url qui contiennent un "/" ou qui contiennent un ".php", ou autre en fonction des urls qui ne doivent pas être réécrites :)

Il faut commencer par trouver la règle à appliquer et ensuite tu pourras l'écrire dans ton htaccess :)

Re: URL rewrite simple

Posté : 12 févr. 2012, 03:59
par foxxy
Oulaaa! Je pensai pas que c'était aussi compliqué! Pourtant c'est vraiment que www.domaine.com/sylvain peut être interprété comme www.domaine.com/sylvain/index.php qui renvérait donc une page vide.
Pourtant c'est un classique des sites communautaire de proposer des espaces membre avec des URL courtes non? :|

Comment faire pour trouver une solution à ce problème ou qu'est ce qui pourrai remplacer ce système?

Re: URL rewrite simple

Posté : 12 févr. 2012, 05:25
par atome13
Comme dit Ryle, tout dépend de la structure de ton code, n'hésite pas à le partager, les modo de ce forum sont la pour t'aider, pas pour te le piquer, pour ma part je dirais, pourquoi ne pas faire un if ?

Tu as le membre sylvain, utilise un espace membre si tu as, et renvoi vers une adresse

If adresse= http://www.domaine.com/$username

Se rediriger vers =

http://www.domaine.com/modelbook.php?id=$username

Ceux qui savent mieux que moi, n'hésitez pas à me corriger, je suis débutant.

Cordialement

Re: URL rewrite simple

Posté : 12 févr. 2012, 06:17
par sam12
Je verrai plutôt à un "/membres/sylvain" qui serait bien plus simple ;)
Ou alors passer des éléments "-" ou autres que tu n'utilises pas sur d'autres dossiers pour les identifier.

Re: URL rewrite simple

Posté : 12 févr. 2012, 19:12
par foxxy
@atome13 Je ne comprend pas trop ce que tu propose car je pensais d'utiliser un fichier .htaccess, je ne pense pas qu'on puisse en PHP dire "If adresse= http://www.domaine.com/$username". Il n'y a rien pour vérifier l'adresse en temps réel à ma connaissance. Le fait de passer par un .htaccess (le premier fichier lu avant l'affichage du site) est à mon avis la seule solution.

Pour ce qui est de la stucture du site je ne sais pas trop quoi vous dire, c'est du genre classique:

images
js
include
index.php
modelbook.php
.htaccess
style.css
Page1.php
Page2.php
...

Je ne vois pas vraiment ce que ca peut vous apporter de savoir ca. Quand au code, c'est du PHP, jQuery, css...

@sam12 Je pense que je vais devoir utiliser ta solution mais un peu à contre-coeur car j'aurai vraiment voulu que les utilisateurs n'ai qu'à se souvenir du site (et leur pseudo biensur) comme la plupart des sites à membres.
Dans mon .htaccess en ce moment j'ai ca:

Code : Tout sélectionner

Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule ^([a-z]+)/?$ modelbook.php?id=$1 [L]
Quand je vais sur http://www.domaine.com/Sylvain , j'ai une page 404: "The requested URL /Sylvain was not found on this server." sans qu'aucune redirection ne se fasse.

Re: URL rewrite simple

Posté : 12 févr. 2012, 20:52
par Ryle
Connaitre la structure de ton site permet de savoir par exemple que l'adresse http://www.domaine.com/images ne correspond pas au pseudo d'un utilisateur et ne doit pas être redirigée vers modelbook.php?id=images :)

Le problème que tu rencontres actuellement est lié au fait que les expression régulières sont sensibles à la casse et que si entre "a" et "z", on trouve bien le caractère "s", en revanche on y trouve pas le caractère "S". Il faut donc soit autoriser les deux a-zA-Z, soit rendre l'expression insensible à la casse nocase/NC :)


Après quelques recherches, tu dois également pouvoir utiliser les conditions suivantes pour vérifier si la page demandée existe ou non (et donc considérer uniquement comme des pseudos les urls qui ne correspondent à rien sur ton site :))

Code : Tout sélectionner

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-z]+)/?$ modelbook.php?id=$1 [NC,L]
A tester :)

Re: URL rewrite simple

Posté : 15 févr. 2012, 14:54
par foxxy
Merci pour ta réponse mais que veux dire ca?

Code : Tout sélectionner

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d

Re: URL rewrite simple

Posté : 15 févr. 2012, 16:30
par moogli