Url ne change pas dans la barre d'adresse

Fermé
sclolo - 26 juin 2010 à 09:32
 sclolo - 27 juin 2010 à 15:31
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.

7 réponses

arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 477
26 juin 2010 à 12:20
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 19125 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 23 mars 2023 4 468
26 juin 2010 à 13:48
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
Merci, mais la redirection se fait correctement mais l'adresse redevient quand même l'adresse d'origine.
0
avion-f16 Messages postés 19125 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 23 mars 2023 4 468
27 juin 2010 à 14:10
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
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 19125 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 23 mars 2023 4 468
27 juin 2010 à 15:08
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
Super merci beaucoup. J'ai du mal avec les patterns. Pas besoin de l'url rewriting pour faire ça !
0