réécrire des urls /index.php?page=$valeur en /valeur

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

hiladure
Nouveau WRInaute
 
Messages: 1
Inscription: Ven Jan 26, 2007 15:54

réécrire des urls /index.php?page=$valeur en /valeur

Message le Ven Jan 26, 2007 17:52

Bonjour,

J'ai un site avec des URLs du type suivant :
http://www.example.com/index.php?page=accueil
J'ai défini des liens du type http://www.example.com/accueil
Après avoir fait pointer mes href sur le pattern de mes urls fictives, et après avoir bien vérifié toute la configuration, la nouvelle adresse (dynamique) s'affiche dans le navigateur...
Aucun intéret de changer mes liens puisque le résultat est le même dans la barre d'adresse !
En revanche, j'ai pu arriver, via l'utilisation de regex, à supprimer quelques éléments pour avoir des URLs du type http://www.example.com/?=accueil
Mais il semblerait que les caractères ? et = ne sont pas gérés par le mod_rewrite d'apache, dans l'adresse à réécrire.
J'ai bien essayé de les masquer comme pour les regex pcre, mais pas de résultat.

Pourriez-vous m'aider à avoir des URLs du type http://www.example.com/accueil,
càd avec le paramètre de la variable dans la barre d'adresse...

Les infos :
adresse fictive
http://www.example.com/accueil
adresse réelle
http://www.example.com/index.php?page=accueil

Le fichier .htaccess :
Code: Tout sélectionner
RewriteEngine On
RewriteRule ^(accueil|toto|tata|tonton )$ /index.php?page=$1 [L]
#qui permet d'afficher la page correcte, mais avec la même url qu'avant... grrr...
RewriteRule ^index(\.)([a-z0-9]*)$ http://www.example.com/ [L]
# qui permet de supprimer 'index' de l'url du navigateur.
RewriteRule ^page(=)$ http://www.example.com/
# qui supprime 'page' du navigateur...



Si c'est trop évident,
et/ou si je n'ai pas posté au bon endroit, merci de m'en informer par mp et de verrouiller ce thread.


edit dd32 : example.com pour les exemples d'url :wink:

Mysteriousfea
Nouveau WRInaute
 
Messages: 18
Inscription: Lun Mar 31, 2008 17:57

Message le Ven Avr 11, 2008 11:16

Ca m'intérésserait, si quelqu'un a une solution...


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3326
Inscription: Mar Nov 16, 2004 18:27

Message le Ven Avr 11, 2008 21:22

>> Mais il semblerait que les caractères ? et = ne sont pas gérés par le mod_rewrite d'apache, dans l'adresse à réécrire.

et pourtant ils le sont. Tout le jeu de caractère est pris en compte.

Le = est un simple caractère.
Le ? est un métacaractère, il doit être échapper pour retrouver sa simple valeur de caractere si tel est son emploi dans ton code.
\?

Mysteriousfea
Nouveau WRInaute
 
Messages: 18
Inscription: Lun Mar 31, 2008 17:57

Message le Mar Avr 15, 2008 10:42

Tu aurais un code ?
Merci


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3326
Inscription: Mar Nov 16, 2004 18:27

Message le Mar Avr 15, 2008 14:53

Mysteriousfea a écrit:Tu aurais un code ?
Merci


pour cet exemple ?

-http://www.example.com/accueil
vers
-http://www.example.com/index.php?page=accueil

Code: Tout sélectionner
RewriteRule   ^(.*)$    /index.php?page=$1 [L]

Mysteriousfea
Nouveau WRInaute
 
Messages: 18
Inscription: Lun Mar 31, 2008 17:57

Message le Mer Avr 16, 2008 19:17

Ca marche pas... Ca provoque une erreur serveur... Tu sais d'où ça peut venir ?


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3326
Inscription: Mar Nov 16, 2004 18:27

Message le Jeu Avr 17, 2008 8:34

pas franchement, mais j'ai encore droit a 1 tir ?

Code: Tout sélectionner
#execute la règle si le fichier existe
RewriteCond %{REQUEST_FILENAME} -f
#exlu le fichier index.php
RewriteCond %{REQUEST_URI} !^/index.php
#redirection
RewriteRule   ([^/]*)$    /index.php?page=$1 [R,L]

Mysteriousfea
Nouveau WRInaute
 
Messages: 18
Inscription: Lun Mar 31, 2008 17:57

Message le Jeu Avr 17, 2008 20:55

Non, marche pô...

maxparm
Nouveau WRInaute
 
Messages: 2
Inscription: Ven Avr 18, 2008 0:49

Message le Ven Avr 18, 2008 0:53

Bonjour,

J'ai exactement le même problème!

Quand je mets l'adresse www.domaine.tld/valeur1/valeur2 dans mon navigateur et que je valide, il me fait une sorte de redirection et affiche dans la barre d'adresse www.domaine.tld/index.php?id=valeur1&id2=valeur2

Là je comprends pas trop ce qu'il se passe.

PS: je teste sous easyphp 2.0

Vap
WRInaute accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 20:12

Message le Ven Avr 18, 2008 18:57

Il faut savoir que Apache ajoute un / après une URL qui ne finit pas avec un type mime.

Donc une URL de la forme
http://www.example.com/accueil
est vue en fait comme
http://www.example.com/accueil/

On peut désactiver ce comportement, mais ce n'est pas conseillé. Je te laisse chercher dans la doc si tu veux vraiment le faire.

Donc tes règles ne doivent pas supposer que l'URL se fini sans / à la fin.

Par ailleurs, tu mets des [L] à la fin de tes règles, donc ça empêche l'execution des suivantes...

Enfin, pour filter ce qui suit le ? il faut utiliser QUERY_STRING

Essaie donc ce qui suit:

Code: Tout sélectionner
RewriteEngine On

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*) /index.php?page=$1


sans aucune autre règle.

La règle que tu voulais utiliser pour enlever index peut facilement faire boucler. Et ta dernière règle ne peut pas filtrer ce qui suit le ?

maxparm
Nouveau WRInaute
 
Messages: 2
Inscription: Ven Avr 18, 2008 0:49

Message le Ven Avr 18, 2008 21:47

Bonsoir!

Merci pour ta réponse, mais j'ai essayé ce que tu disais et cela ne change rien au fait qu'après avoir tapé l'adresse réécrite dans la barre de lien de mon navigateur, il me reaffiche l'ancienne adresse.

C'est vraiment bizarre ce problème, en plus je ne trouve pas d'autres personnes dans mon cas.

Merci en tout cas!

Vap
WRInaute accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 20:12

Message le Dim Avr 20, 2008 8:44

As tu vidé le cache et l'historique de ton navigateur?

IL faut que tu enlève tout ça pour tester une nouvelle redirection.

Si le problème persiste demande a ton hébergeur pourquoi ta réécriture ne marche pas.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3326
Inscription: Mar Nov 16, 2004 18:27

Message le Dim Avr 20, 2008 12:59

stoooppp it !!

Si cela ne marche pas, c'est que le serveur refuse les fichiers réécrit sans extention !!

Game over :D

Vap
WRInaute accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 20:12

Message le Lun Avr 21, 2008 8:44

KOogar a écrit:stoooppp it !!

Si cela ne marche pas, c'est que le serveur refuse les fichiers réécrit sans extention !!

Game over :D


Ce serait du a quelle option?

Apache est reconfigurable par fichier .htaccess en principe.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3326
Inscription: Mar Nov 16, 2004 18:27

Message le Lun Avr 21, 2008 13:32

non... il faut avoir la main sur le serveur et la reconfiguration se fait à partir du fichier httpd.conf

réécrire des urls /index.php?page=$valeur en /valeur

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 :

Consultez la description détaillée des produits ou services de Google suivants : Google Toolbar



Qui est en ligne

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