url ne change pas dans la barre d'adresse

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

sclolo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 2
Inscription: 12 Déc 2008

url ne change pas dans la barre d'adresse

Message le Sam Juin 26, 2010 8:25

Bonjour à tous.

J'ai le code suivant dans mon .htaccess :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^accueil-([0-9]+)\.html$ /site/accueil.php?page=$1 [L]

Quand je tape accueil-1.html j'arrive bien sur la bonne page.
Par contre quand je saisi http://monsite/site/accueil.php?page=1 l'adresse ne change pas dans la barre d'adresse du navigateur --> http://monsite/site/accueil-1.html.

Je ne comprends pas.
Merci de m'aider.


anemone-clown
WRInaute passionné
WRInaute passionné
 
Messages: 1277
Inscription: 11 Nov 2007

Re: url ne change pas dans la barre d'adresse

Message le Sam Juin 26, 2010 10:18

Bonjour,

c'est logique que ton adresse ne change pas puisque rien ne demande au navigateur de changer... La règle de reécriture ne fonctionne que dans un sens.

Si tu veux éviter du contenu dupliqué, il te reste à gérer l'url canonique dans les entêtes de pages : cela nécessite des modifications du code php qui génère tes pages.

sclolo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 2
Inscription: 12 Déc 2008

Re: url ne change pas dans la barre d'adresse

Message le Dim Juin 27, 2010 7:44

merci. un exemple peut-être ?

J'ai testé ça mais ça ne change pas l'url

if(!preg_match('#^site/accueil-([0-9]+)\.html$#i',$_SERVER['PHP_SELF']))
{
header('Location: /site/accueil-'.$_GET['page'].'.html');
}


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: url ne change pas dans la barre d'adresse

Message le Lun Juin 28, 2010 7:47

les marqueurs debut et fin de chaine ^$ ne sont pas valable avec le moteur PCRE. ta redirection ne se fait pas car tu as du laissé du code html, texte ou autre avant, fait un script avec juste la redirection pour tester.

Code: Tout sélectionner
<?php
if( !preg_match('#site/accueil-([0-9]+)\.html#i', $_SERVER['PHP_SELF'] ) ) {
header('Status: 301 Moved Permanently', false, 301);
header('Location: /site/accueil-'.$_GET['page'].'.html');
exit(); } ?>


Pour le rewrite, il te faut mettre impérativement une condition, ensuite tu met la redirection avec un R comme flag (pour forcer la redirection)

Code: Tout sélectionner
RewriteCond %{REQUEST_URI} ^/site/accueil.php?page=([0-9]+)
RewriteRule $  /accueil-%1.html [R=301,L]


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités