Aller au contenu

url rewrite


Sujets conseillés

Bonjour,

J'ai un souci, je n'arrive pas à faire mon url rewrite :

l'url par exemple .http://www.annuaire-bleu.com/index.php?c=/World/Français/Formation/Associations

Doit devenir

.http://www.annuaire-bleu.com/index-World/Français/Formation/Associations.php

Donc la ligne dans le .htaccess devrait être :

RewriteRule ^index-(*)\.php$ /index.php?c=$1  [L]

Mais j'ai une erreur à la place...

Quelque voit il où est la faute de syntaxe?...

merci,

Steph

<edit:anonymus. J'ai désactivé les liens juste pour une meilleure lisibilité ;) >

Lien vers le commentaire
Partager sur d’autres sites

RewriteRule ^index-(*)\.php$ /index.php?c=$1  [L]

Mais j'ai une erreur à la place...

Les expressions régulières qui pilotent les réécritures attribuent la valeur "0 ou plusieurs" au terme qui précède le signe "*".

Dans ta règle, rien ne précède le * donc cette partie génère une erreur. ;)

Il faudrait plutôt écrire:

RewriteRule ^index-(.*)\.php$ /index.php?c=$1  [L]

pour que cette répétition s'applique à quelque chose. Le point décimal signifiant "n'importe quel caractère".

Mais ce faisant, tu vas créer des répertoires virtuels. Si ces pages ont des liens relatifs (images ou fichiers), elles seront cherchées à partir du répertoire "courant" (ou plutôt celui que le navigateur pense être courant), donc dans l'exemple, le répertoire /index-World/Français/Formation/ qui n'existe que grâce à ta réécriture, mais pas dans la réalité.

Pour que les liens fonctionnent, il faudra opter pour l'une des deux solutions suivantes:

- tous les liens (images, textes...) en absolu

- l'utilisation de la balise <base href="..." />

Dan

Lien vers le commentaire
Partager sur d’autres sites

Salut Recif,

Je suis surpris par l'ecriture de ton url dynamique et du résultat que tu souhaites obtenir.

As-tu aussi modifié le code source ?

Je te conseille un article concernant la reécriture d"url écrit par Dan.

http://www.webmaster-hub.com/publication/article5.html

Jeff, B)

éditer: Oupss Dan a répondu dans l'intervalle ..... :)

Modifié par Jeff
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

les exemples que tu donne ne sont que des exemples, ceci dit, 2 choses :

Le 'c' cédille (ç) n'est pas forcément une bonne idée dans une url,

les majuscules ne sont pas non plus une bonne idée.

Une url ne devrait pas comporter de caractères, de lettres 'nationaux', tels que le 'c' cédille, et devrait être, pour une meilleure homogénéité, toute en minuscule. Ce ne sont pas des 'obligations', juste des 'recommandations'.

Nico.

Lien vers le commentaire
Partager sur d’autres sites

Salut Recif,

Je suis surpris par l'ecriture de ton url dynamique et du résultat que tu souhaites obtenir.

As-tu aussi modifié le code source ?

Je te conseille un article concernant la reécriture d"url  écrit par Dan.

http://www.webmaster-hub.com/publication/article5.html

Jeff,  B)

éditer: Oupss Dan a répondu dans l'intervale .....  :)

<{POST_SNAPBACK}>

Oui, c'est l'article sur lequel j'essaye de me baser mais j'avoue que j'ai du mal avec la syntaxe. J'ai fais le test avec nexistepas.html et ça marche très bien, mais mes urls sont plus complexes... :wacko:

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

les exemples que tu donne ne sont que des exemples, ceci dit, 2 choses :

Le 'c' cédille (ç) n'est pas forcément une bonne idée dans une url,

les majuscules ne sont pas non plus une bonne idée.

Une url ne devrait pas comporter de caractères, de lettres 'nationaux', tels que le 'c' cédille, et devrait être, pour une meilleure homogénéité, toute en minuscule. Ce ne sont pas des 'obligations', juste des 'recommandations'.

Nico.

<{POST_SNAPBACK}>

Oui, j'ai enlevé hier tous les caractères spéciaux dans tout le répertoire...

Lien vers le commentaire
Partager sur d’autres sites

Peut être remplacer les urls par
http://www.annuaire-bleu.com/World-Français-Formation-Associations.html

? c'est mieux non?

Si tu n'as pas possibilité de rajouter toi-même une balise <base href="..." />, ce serait mieux pour préserver les liens des pages.

Je te suggère dans ce cas de t'inspirer de l'article sur la réécriture récursive, vu que la profondeur des répertoires n'est pas connue à l'avance.

Tu le trouveras à cette page du Hub ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

La syntaxe serait celle que je t'ai donnée plus haut.

L'as-tu essayée ?

Pour le tag <base href="..." /> il suffit de remplacer cela par l'adresse de ta page index.php, soit

<base href="http://www.annuaire-bleu.com/index.php" />

Lien vers le commentaire
Partager sur d’autres sites

J'essaye avec ça mais pas non plus de succès :-(

RewriteRule index(-.+)-([^-]+)-([^-&]*)([^-]*)\.html index$1/$2\.html [N]

RewriteRule index-([^-]+)-([^-]*)(.*)\.html index.php?c=$1/$2 [L]

Lien vers le commentaire
Partager sur d’autres sites

Salut Recif,

L'erreur était chez toi ;) Vu que la page http://www.annuaire-bleu.com/index.php?c=W...Francais/Achats n'est pas trouvée non plus.

Il faut ajouter un / devant World, car cette page ci se trouve :

http://www.annuaire-bleu.com/index.php?c=/...Francais/Achats

Donc, change ta règle en

RewriteRule ^index-(.*)\.php$ /index.php?c=/$1  [L]

Ou en

RewriteRule ^index-(.*)\.html$ /index.php?c=/$1  [L]

si tu veux des URLs en .html

Dan

Lien vers le commentaire
Partager sur d’autres sites

Cool! J'obtiens qque chose! Merci :)

Par contre pour éviter que l'url soit interprêtée comme répertoires, on peut voir pour transformer les / en - ?

Modifié par Recif
Lien vers le commentaire
Partager sur d’autres sites

Cool! J'obtiens qque chose! Merci  :)

Par contre pour éviter que l'url soit interprêtée comme répertoires, on peut voir pour transformer les / en - ?

Pas de quoi ! ;)

En laisant les / , tu éviteras la polémique sur les mots-clés dans l'URL séparés par '-' ou '_' ...

Il est plus simple de les laisser, car cela évite la récursivité dans tes réécritures.

Surtout que tu n'as pas de problème à ajouter un <base href="..." /> dans ton template.

Sinon, la réponse et l'explication se trouvent dans l'article que j'ai mentionné plus haut ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Les moteurs de recherche ne sont pas gênés par les niveaux de sous répertoires?...

Sinon pour l'article, c'est celui que j'ai sous le coude depuis ce matin ;)

Mais j'avoue que j'ai du mal à convertir les explication pour coller à mes problèmes de / :huh:

Lien vers le commentaire
Partager sur d’autres sites

Les moteurs de recherche n'ont pas de problème de sous-répertoire pour les pages indexées.

En fait, ils comptent en nombre de clics pour atteindre une page depuis la racine du site.

Par contre, si une page n'est pas encore indexée, elle peut être considérée comme lointaine.

Le but du jeu étant de faire indexer tes pages, la réponse à terme est "non" ;)

Le problème de la réécriture récursive est qu'il faut l'attaquer "avec des gants" (et des connaissances) parce que c'est le moyen le plus sûr de mettre un serveur à genoux si on fait une petite erreur. :lol:

Lien vers le commentaire
Partager sur d’autres sites

Oui, pour le nombre de clic, c'est deux et la taille maxi de la page 101ko. Pour cette indexation je m'en occupe. Mais je voulais être certain que les sous répèrtoires ne gênent pas pour une url. impecc. En tout cas merci pour tout, je pense m'en sortir avec ça ;-)

Modifié par Recif
Lien vers le commentaire
Partager sur d’autres sites

Désolé, encore moi avec mon url rewriting ;-)

J'ai un souci de reconnaissance des variables :

cette ligne fonctionne :

RewriteRule ^forum\.html$ modules.php?op=modload&name=XForum [L]

Mais celle ci non :

RewriteRule ^forum-([0-9]+)\.html$ modules.php?name=XForum&file=forumdisplay&fid=$1 [L]

A priori il ne prend pas les variables $1 etc.

Vous voyez quque chose dans la syntaxe?

merci,

Steph

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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