8791 sujets

Développement web côté serveur, CMS

Bonjour a tous..
J'ai un soucis lors de l'optimisation d'une rewriterule pour le site de ma boite..
dans le but de gagner un peu en référencement je voudrai faire fonctionner cette règle :


Options +FollowSymlinks

RewriteEngine On

RewriteRule ^page-([0-9]+)-([0-9]+)-([a-z]+)\.html$  /home.10.11/geodd/www/dev/index.php?page=$1&partie=$2#$3 [L]


Je ne comprends pas pouorquoi elle ne marche pas.. Smiley ohwell si kkun a une solution ? je suis preneur Smiley langue
Les ancres en bout d'URL ne sont pas gérées par le serveur, mais par le navigateur, une fois la page chargée. Ton problème vient sans doute de là ?
le serveur ne s'occupe logiquement que de retranscrire l'adresse en suivant la règle donner dans l'.htaccess pour enfin transmettre l'URL transcrite au navigateur, non ? (Jai di une connerie ? *-) )
Donc si la regle est bien faite l'ancre est transmise au navigateur via le serveur qui lui prend en entrée
"http://www.monsite.com/page-3-4-ancre.html"

et renvoi au navigateur
"http://www.monsite.com/index.php?page=3&partie=4#ancre"

Merci de m'aider ds ma kete du St Graal ^^ euh non du rewriterule Smiley langue
Les ancres sont gérés côté client.

Quand tu tapes ce genre d'URL :
site.com/dossier/fichier.html#ancre

Le navigateur envoie en réalité cette requête au serveur :
GET /dossier/fichier.html HTTP/1.x

Tu peux tester avec un sniffeur, regarder les log si tu en as, ou alors avec une extension firefox comme LiveHTTP pour vérifier.

IL est donc normal que ça ne fonctionne pas : soit ton adresse URL réelle, ou soit la valeur du dernier paramètre GET est faussée.
Quand tu utilises l'URL rewriting, le navigateur ne voit rien de cette « redirection ». Apache se charge de tout et ne laisse rien transparaître au client.
Rwick a écrit :
le serveur ne s'occupe logiquement que de retranscrire l'adresse en suivant la règle donner dans l'.htaccess pour enfin transmettre l'URL transcrite au navigateur, non ?

Non.

Rwick a écrit :
(Jai di une connerie ? *-) )

Oui. Smiley biggrin

Le navigateur demande un fichier, et le serveur envoie le fichier. Partant, ton idée de placer l'ancre dans l'URL à rewriter n'est pas réalisable. URL Rewriting ou pas, l'ancre doit faire partie de l'URL chargée par le navigateur.
OKay... :'( bah tant pis alors?
Ya pa une solution paliative à sa ? :O
Voulais gagner en referencement Smiley ohwell
Ouais, à savoir, est-ce qu'il y a un moyen de dire à Apache, par le .htaccess par exemple, d'envoyer une URL avec ancre au navigateur (dans les cas normaux de liens href, il le fait naturellement, n'est-il pas ?).

Thx
Yes... hey, Rwick, c'est possible en passant une variable dans l'URL, bien entendu.
Modifié par shasha (02 Jul 2007 - 14:56)
a écrit :
Concernant le htaccess :

RewriteRule ^Support/SB/templates.html$ /index/Support/Online-Services/SYSTRANBox/User-Guide?anchor=custo [R=301,NC,L]

On récupère ensuite la variable (avec php par exemple), puis on redirige le navigateur avec l'ancre incorporée dans l'URL :

if($_GET['anchor'])
{
       $hash="#".$_GET['anchor'];
       header("location:".$_SERVER['PHP_SELF'].$hash);
}

Et ça marche : http://www.systransoft.com/Support/SB/templates.html (pour continuer l'exemple).

++

Modifié par shasha (02 Jul 2007 - 14:57)
Ah tiens, j'aurais pas pensé que ça marcherait.

J'avais pas pensé à combiner URL Rewriting + redirection via PHP.

Reste à voir s'il y a le moindre intérêt à effectuer cette redirection :
- lisibilité pour les utilisateurs (ils demandent une URL et en obtiennent une autre...) ?
- lisibilité pour les moteurs de recherche ?
Je reviens pour continuer dans le sujet, j'utilise aussi l'url rewriting, et les ancres ne veulent pas suivre, (sur cette page).

Auriez-vous une réponse ? Normalement ce n'est du qu'au html non ?