URL rewriting et #

Nouveau WRInaute
Bonjour,

J'ai constaté un problème en souhaitant effectuer un url rewriting vers une adresse comportant un # (ancre a name).

Je m'explique :
mon htaccess contient :
RewriteRule ^mapage_([0-9]+)_([0-9]+)\.html mapage.php?id=$1#$2 [L,NC]

Le but vous l'aurez compris est qu'un visiteur qui clique sur le lien mapage_128_13.html par exemple soit redirigé vers mapage.php?id=128 jusqu'à l'ancre < a name=13 >.

Mais ce qui se passe en réalité est différent : ma redirection fonctionne bien vers la page mapage.php?id=128, mais la vue reste en haut de la page, et ne va pas du tout jusqu'à l'ancre. Donc je pense que le # n'est pas interprété.

Avez-vous déjà eu ce problème ? Comment le résoudre ?

Merci de vos précieux conseils !
 
WRInaute accro
le # est interprété par le navigateur, pas par le serveur.
Avec un #, tu n'a toujours qu'une seule page.

Donc, tu ne peut pas faire ton rewriting comme cela, il te faut conserver l'ancre, ou la modifier par un autre attribut dans l'url (page.php?id=128&a=13)
 
Nouveau WRInaute
Merci kazhar pour ta réponse. Cependant je n'y ai pas tout saisi...
Qu'entends-tu par "il te faut conserver l'ancre" ?

En effet, si mon url rewriting me redirigeait bien vers la page mapage.php?id=128#13, l'internaute qui la consulterait irait bien directement jusqu'à l'ancre <a name=13>. Mais en fait, on reste en haut de la page ! Comme si l'url rewriting me redirigeait uniquement vers mapage.php?id=128.

J'ai faux quelque part ?
 
WRInaute accro
Oui. C'est le navigateur qui s'occupe de l'ancre.
Le serveur n'en tient absolument pas compte.

En conséquent, ton navigateur n'a pas accès à l'ancre (puisqu'il ne la voit pas)
Donc, tu n'es pas positionné au bon emplacement.

A faite :
Code:
RewriteRule ^mapage([0-9]+)\.html#([0-9]+)$ mapage.php?id=$1#$2 [L,NC]
(pas testé)
 
WRInaute accro
Ton ancre #13 est une "instruction" destinée au navigateur; donc, comme le rewriting ne la fait pas apparaître dans la barre d'adresse, le navigateur ne la reçoit pas et il ne peut pas en tenir compte.

De plus, ta technique provoquerait du duplicate content, car toutes tes adresses différentes mapage_128_13.html, mapage_128_14.html, mapage_128_15.html, mapage_128_16.html,... correspondent au même contenu.

Jean-Luc
 
WRInaute accro
J'essaierais plutôt ceci :
Code:
RewriteRule ^mapage([0-9]+)\.html mapage.php?id=$1 [L,NC]
Et l'ancre devrait fonctionner "toute seule". :D

Jean-Luc
 
Nouveau WRInaute
Mais oui Jean-Luc, ça fonctionne ! J'étais en train de tester ceci au même moment que tu me postais la réponse ! Je m'obstinais à vouloir mettre mon # dans l'url rewriting, alors que ça n'avait aucun intérêt...
Un grand merci pour cette aide précieuse et du temps passé à me répondre !
 

➡️ 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