Toujours ces règles rewriting...J'y suis presque ! ;-)

  • Auteur de la discussion Auteur de la discussion dsaunier
  • Date de début Date de début
WRInaute discret
Bonjour,

Frustrant de passer des heures à tester une règle et y être presque, mais de ne pas trouver exactement...
Je cherche donc les conseils éclairés d'un killer du Rewrite en espérant pouvoir bientôt aider les autres pour de tels cas "complexes" ! (pour moi...)
Mes termes de l'URL en "dur" en pseudo HTML, à rediriger vers une page PHP avec des paramètres, étant séparés par des "/" (forward slash), j'ai séparé les termes de rewriting par ([^/]+) ce qui je pensais signifie "n'importe quoi jusqu'au prochain slash" ? Toujours est-il qu'après des heures d'essai, j'arrive à la conclusion suivante : ma règle marche en fait bien, MAIS s'arrête de fonctionner lorsque l'un des termes contient un tiret...

Exemple à réaliser :

Mes liens "en dur" sont par ex.

voile-annonces/voiliers-a-vendre/morbihan/beneteau/voilier-poids-leger/1212.html

Il me faudrait que ces liens soient transformés en "batoccase-details-annonce-fr-1212.html" car cette structure de liens est prise en compte par une règle suivante.
(Cette partie là marche, donc un appel direct de batoccase-details-annonce-fr-1212.html affiche bien la bonne annonce détaillée.)

Si je fais
RewriteRule voile-annonces/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([0-9]+)\.html$ https://www.webrankinfo.com/dossiers/conseils/relancer-referencement [NC]
alors mon appel ci-dessus redirige bien vers le forum, c'est donc qu'il répond à la structure ? Mais je remplace le test vers le forum par ma vraie regle batoccase-details-annonce-fr-$5.html alors cassé...

J'ai testé avec différents mots-clefs sans aucun sens mais qui suivaient ce schéma :
voile-annonces/truc/pagesuivante/machin/voila/1212.html
et cela fonctionne, mais si je teste avec les URL réels que mon site contient alors la règle ne passe plus !

et donc
http://www.(domaine)/voile-annonces/voilier-poids-leger/beneteau/beneteau/beneteau/1212.html
marche, et
http://www.(domaine)/voile-annonces/voiliers-a-vendre/morbihan/beneteau/voilier-poids-leger/1212.html
ne marche plus !

Merci de votre attention et de votre expertise...
 
WRInaute discret
J'ai élagué pour clarté car c'est le champ d'expérimentations ce fichier, j'avais aussi testé avec des combinaisons comme

RewriteRule ^voile-annonces/(.*)/(.*)/(.*)/(.*)/(.*).(.*)$ batoccase-details-annonce-fr-$5.html

mais sans succès. Ce qui ne marche pas dedans est donc commenté (#) pour ne pas être appelé, mon fichier donne :


Options +FollowSymLinks
RewriteEngine on
Options -Indexes
RewriteBase /

# Pour l'instant liens courts, marchent, rewrite = nouvelle adresse apparait, et Last, skippe la suite.
RewriteRule ^annonce/([0-9]+) batoccase-details-annonce-fr-$1.html [R,L]
RewriteRule ^offer/([0-9]+) batoccase-boat-details-en-$1.html [R,L]

# Lien vers fiche details (ce qui ne va pas)
# RewriteRule voile-annonces/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([0-9]+)\.html$ https://www.webrankinfo.com/dossiers/conseils/relancer-referencement [NC]
# test envoi direct..ok !
#RewriteRule voile-annonces/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([0-9]+)\.html$ batoccase-details-annonce-fr-$5.html
# marche pas...

#quand marchera, sa contrepartie ENG : -> batoccase-boat-details-en-1212.html
#RewriteRule ^sailing-offers/(.*)/(.*)/(.*)/(.*)/([0-9]+)\.html$ batoccase-boat-details-en-$5.html
#RewriteRule sailing-offers/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([0-9]+)\.html$ batoccase-boat-details-en-$5.html

# Marche : suite du traitement ou si appel direct ex. batoccase-details-annonce-fr-1212.html
RewriteRule ^(.*)-(.*)-(.*)-([a-z_]+)-(.*).html$ $1.php?contenu=$2-$3&lang=$4&page=$5

# typepage-mot1-mot2-lg.html ex "batoccase-accueil-bienvenue-fr.html" -> "batoccase.php?contenu=accueil-bienvenue&lang=fr"
RewriteRule ^(.*)-(.*)-(.*)-([a-z_]+).html$ $1.php?refcontenu=$2-$3&lang=$4
 
WRInaute discret
Je suis toujours bloqué à cette règle pour surement une erreur simple...

Mes liens "en dur" sont par ex.

voile-annonces/voiliers-a-vendre/morbihan/beneteau/voilier-poids-leger/1212.html

Il faut que ces liens soient transformés en "batoccase-details-annonce-fr-1212.html"

J'ai en règle de rewriting

RewriteRule voile-annonces/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([0-9]+)\.html$ batoccase-details-annonce-fr-$5.html [NC]

Un appel avec
http://www.(domaine)/voile-annonces/voilier-poids-leger/beneteau/beneteau/beneteau/1212.html

marche, mais avec ce qui serait mon lien réel et dont des mots-clefs contiennent des tirets :

http://www.(domaine)/voile-annonces/voiliers-a-vendre/morbihan/beneteau/voilier-poids-leger/1212.html

alors l'appel ne marche plus !
Est-ce une erreur parce que je considère qu'avec ([^/]+) on devrait avoir "tout sauf un slash avant" ?
Je ne comprends pas en quoi "beneteau" est vu différemment de "voilier-poids-leger" ???...

Merci de votre expertise et de vos lumières !
 
WRInaute discret
Lumière de personne alors ? :(

J'ai en règle de rewriting

RewriteRule voile-annonces/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([0-9]+)\.html$ batoccase-details-annonce-fr-$5.html [NC]

Un appel avec
http://www.(domaine)/voile-annonces/voilier-poids-leger/beneteau/beneteau/beneteau/1212.html

marche, mais avec ce qui serait mon lien réel et dont des mots-clefs contiennent des tirets :

http://www.(domaine)/voile-annonces/voiliers-a-vendre/morbihan/beneteau/voilier-poids-leger/1212.html

alors l'appel ne marche plus !
Est-ce une erreur d'utiliser ([^/]+) ?

Merci de toute aide ...
 
WRInaute discret
Si je ne me trompe le L indique que c'est la dernière règle à suivre et saute toutes les suivantes ?

Il me faut par exemple que

voile-annonces/voiliers-a-vendre/morbihan/beneteau/voilier-poids-leger/1212.html

soit transformé en "batoccase-details-annonce-fr-1212.html"

car cette structure de liens est ensuite prise en compte par une règle suivante, qui elle marche très bien : un appel direct de batoccase-details-annonce-fr-1212.html affiche bien la bonne annonce détaillée.

Désespérément vôtre...
 
WRInaute occasionnel
D'après le test que j'ai fait, le problême c'est que sens ce [L] de la première règle, une partie de la première URL est rajouté au résultat.
soit
Code:
voile-annonces/voiliers-a-vendre/morbihan/beneteau/voilier-poids-leger/1212.html
donne après le passage dans la 1er règle
Code:
batoccase-details-annonce-fr-1212.html/voiliers-a-vendre/morbihan/beneteau/voilier-poids-leger/1212
et c'est cette URL qui passe dans la seconde régle et qui chez moi pose des problèmes. Est-ce ce problème que tu as ou un autre ?
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut