Url ne change pas dans la barre d'adresse

sclolo -  
 sclolo -
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.
A voir également:

7 réponses

arthezius Messages postés 3756 Statut Membre 475
 
L'adresse ne va pas changer d'elle même dans la barre d'adresse.
L'ancien écriture reste valide.
Par contre, tape http://monsite/site/accueil-1.html dans la barre d'adresse.
Il te faudra donc modifier tout tes liens vers ces pages.
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Salut.

Dans le script PHP tu peux utiliser la variable $_SERVER['PHP_SELF'] qui contient le nom du fichier du script en cours d'exécution, par rapport à la racine web.

if(!preg_match('#^/site/accueil-([0-9]+)\.html$#i',$_SERVER['PHP_SELF'])) {
    header('Location: /site/accueil-'.$_GET['page'].'.html');
}
0
sclolo
 
Merci, mais la redirection se fait correctement mais l'adresse redevient quand même l'adresse d'origine.
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Ce n'est pas possible, sauf si tu as un autre script qui fait la redirection vers « /site/accueil.php?page=... »
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sclolo
 
Merci, bon en fait j'ai résolu le problème en réécrivant les liens dans mon source, chose que je n'avais pas saisi en première lecture des différentes doc.
Maintenant j'aimerai que
RewriteRule ^accueil-([0-9]+)\.html$ /site/accueil.php?page=$1 [L]

Devienne
RewriteRule ^nom_de_ma_page.html$ /site/accueil.php?page=$1 [L]

en fonction de la valeur de page. je pense qu'avec RewriteCond %{QUERY_STRING} on peut le faire mais j'ai du mal à saisir le déroulement.
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Il suffit de faire comme ceci :
RewriteRule ^(.+)\.html$ /site/accueil.php?page=$1

Ainsi :
index.html => /site/accueil.php?page=index
photos.html => /site/accueil.php?page=photos
...
0
sclolo
 
Super merci beaucoup. J'ai du mal avec les patterns. Pas besoin de l'url rewriting pour faire ça !
0