Aller au contenu

Sujets conseillés

Posté

Bonjour,

la plateforme de blog Wordpress permet de créer des adresses réécrites sans numéro d'identifiant visible.

Imaginons que la page non réecrite soit :

www.exemple.com/article.php?numero=5

Le titre de la page serait : "Mon article en ligne"

Ma page est enregistrée dans une base de données ayant pour identifiant le N°5.

L'adresse réecrite s'afficherait comme cela :

www.exemple.com/mon-article-en-ligne

et non pas quelque chose du genre :

www.exemple.com/article-5-mon-article-en-ligne

ou "5" serait l'identifiant à chercher en base de données.

J'imagine que l'url est enregistrée dans la base et que c'est elle qui sert à retrouver la bonne ligne de données.

Mais je ne vois pas vraiment comment le système pourrait fonctionner dans son ensemble.

Toutes les pages du site sont traitées de la meme manière au niveau du Htaccess ? (vu qu'il n'y a que l'url en identifiant)

Merci d'éclairer ma lanterne :)

Posté

Si tu regardes le .htaccess, tu verras que pour toute URL qui ne correspond pas à un fichier existant, il renvoie à /index.php.

Et c'est le /index.php qui va reprendre le contenu de l'URL qui l'appelle et le rechercher dans sa base - exactement comme tu l'as écrit. Si l'URL n'est pas retrouvée dans la base, un code 404 sera renvoyé.

Leonick 1000 messages: Hub, hub, hourra !

Jean-Luc

Posté

Merci à vous deux pour votre réponse,

est ce que vous auriez la gentillesse de me donner le code .htaccess pour faire ce genre de redirection :

Si l'adresse n'existe pas, elle est retournée sur l'index ?

Et autre question :

Dans ce cas, quelle est la variable qui est retournée à l'index ? l'URL ?

Comment est ce que ca fonctionne au niveau du .Htaccess ?

Posté

Voici le .htaccess créé par WordPress quand on choisit de "belles" URL:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

A l'intérieur du script PHP, les infos utiles se trouvent dans $_SERVER.

Jean-Luc

Posté (modifié)

Merci pour ta réponse,

j'ai mis le HTACCESS en place, pas de souci,

par contre, je ne sais aps quelle variable mettre dans le $_SERVER[****] pour récupérer la chaine de l'URL.

Exemple :

www.exemple.com/le-titre-de-mon-sujet

Comment récupérer "le-titre-de-mon-sujet", une fois qu'on se retrouve sur l'index ?

Alors j'ai trouvé une solution, mais je suis preneur si il y en a une autre, et je veux bien votre commentaire dessus :

RewriteRule (.*)  /index.php?uri=$1 [L]

Et la, je recupère "le-titre-de-mon-sujet" (cf mon exemple) dans la variable $uri

PS : pourquoi cette ligne ne fonctionne pas, c'est ce que j'avais essayé au départ :

RewriteRule ^([^.?]+) /xxx.php?url=$1 [QSA,L]

Modifié par equids
Posté
Comment récupérer "le-titre-de-mon-sujet", une fois qu'on se retrouve sur l'index ?
Essaie $_SERVER['REQUEST_URI'] comme indiqué dans la page dont je t'ai donné le lien. ;)

Alors j'ai trouvé une solution, mais je suis preneur si il y en a une autre, et je veux bien votre commentaire dessus :

RewriteRule (.*)  /index.php?uri=$1 [L]

C'est correct.

PS : pourquoi cette ligne ne fonctionne pas, c'est ce que j'avais essayé au départ :

RewriteRule ^([^.?]+) /xxx.php?url=$1 [QSA,L]

Quel sens donnes-tu à [^.?] ?

Jean-Luc

Posté
Merci pour ta réponse,

j'ai mis le HTACCESS en place, pas de souci,

par contre, je ne sais aps quelle variable mettre dans le $_SERVER[****] pour récupérer la chaine de l'URL.

le mieux pour comprendre serait d'installer wordpress sur ton pc, ça t'aidera à comprendre le fonctionnement, après avoir fait 2-3 essais différents ainsi que des appels à des url existantes

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...