Rewriting ?param=test_test2 > /test/test2

 

keitboor
WRInaute impliqué
WRInaute impliqué
 
Messages: 321
Inscription: Lun Juil 19, 2004 13:03

Rewriting ?param=test_test2 > /test/test2

Message le Lun Déc 01, 2008 12:45

Bonjour,

J'aurai besoin de rewriter cette url :

-http://www.example.com/index.php?modules=test_test2 en -http://www.example.com/test/test2

J'ai utilisé cette règle :

Code: Tout sélectionner
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?modules=$1_$2 [L]


Mais elle ne marche malheureusement pas. Je me demande donc si c'est tout simplement possible de scinder en 2 un paramètre GET ?

Merci d'avance, cordialement.

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


Leonick
WRInaute accro
WRInaute accro
 
Messages: 11171
Inscription: Dim Aoû 08, 2004 21:24

Message le Lun Déc 01, 2008 16:39

Ca veut dire quoi "elle ne marche malheureusement pas" ?
essaie d'ajouter un R dans les options, donc [R,L] comme cela tu verras la redirection qui est effectuée.
Quand c'est ok, tu supprime le R,


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1873
Inscription: Dim Déc 17, 2006 22:08

Message le Lun Déc 01, 2008 16:40

cette règle est correcte?
Quand tu appelles -http://www.example.com/test/test2 quel est le résultat?
Dernière édition par webmasterlamogere le Lun Déc 01, 2008 17:10, édité 1 fois.


keitboor
WRInaute impliqué
WRInaute impliqué
 
Messages: 321
Inscription: Lun Juil 19, 2004 13:03

Message le Lun Déc 01, 2008 17:04

Le problème c'est que ca ne rentre pas dans mon if, voici le code dans mon index :

Code: Tout sélectionner
if (isset($_GET['modules'])) {
   $filename = "modules/" . $_GET['modules'] . ".php";
   if (file_exists($filename)) {
      require_once($filename);
   }
   else {
      echo "erreur";
   }
}


Donc en clair, suivant la valeur passé pour la variable get modules, ça inclu la page si elle est trouvé, sinon, ca met une erreur.

Pour -http://www.example.com/test/test2/ ca affiche erreur et pour -http://www.example.com/index.php?modules=test_test2 ca m'affiche bien la page.
Dernière édition par keitboor le Lun Déc 01, 2008 17:06, édité 1 fois.


e-kiwi
Modérateur
Modérateur
 
Messages: 13573
Inscription: Mar Déc 23, 2003 10:04

Message le Lun Déc 01, 2008 17:05

il faut faire le lien vers la nouvelle URL aussi


keitboor
WRInaute impliqué
WRInaute impliqué
 
Messages: 321
Inscription: Lun Juil 19, 2004 13:03

Message le Lun Déc 01, 2008 17:14

Comment ça le lien ?


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1873
Inscription: Dim Déc 17, 2006 22:08

Message le Lun Déc 01, 2008 17:15

j'ai déjà vu un problème avec l'option multiview quand le répertoire virtuel à le même nom qu'un script sans l'extension.
Si tu as un script -http://www.example.com/test.php essaye d'ajouter :
Code: Tout sélectionner
Options -MultiViews


keitboor
WRInaute impliqué
WRInaute impliqué
 
Messages: 321
Inscription: Lun Juil 19, 2004 13:03

Message le Lun Déc 01, 2008 17:20

Avec R,L pareil, ca affiche "Erreur".

J'ai pas de script du même nom à la racine mais j'ai testé quand même Options -MultiViews. Toujours pareil : Erreur.


e-kiwi
Modérateur
Modérateur
 
Messages: 13573
Inscription: Mar Déc 23, 2003 10:04

Message le Lun Déc 01, 2008 17:21



keitboor
WRInaute impliqué
WRInaute impliqué
 
Messages: 321
Inscription: Lun Juil 19, 2004 13:03

Message le Lun Déc 01, 2008 17:32

Oui, d'ailleurs pour parer à ce problème. Il suffit d'inverser la règle de rewriting ou il y a un autre moyen ?

Merci pour votre aide.


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1873
Inscription: Dim Déc 17, 2006 22:08

Message le Lun Déc 01, 2008 17:33

essaye de mettre le flag R à la place de L. Si tu n'es pas redirigé en appelant -http://www.example.com/test/test2/ c'est la partie gauche qui contient une erreur, sinon c'est la partie droite de la règle.
Code: Tout sélectionner
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ /index.php?modules=$1_$2 [R]


keitboor
WRInaute impliqué
WRInaute impliqué
 
Messages: 321
Inscription: Lun Juil 19, 2004 13:03

Message le Lun Déc 01, 2008 17:40

Je viens de trouver l'erreur. Le soucis est que j'ai 2 règles :

Code: Tout sélectionner
# modules avec id :
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?modules=$1&id=$2 [L]

# modules sans id
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?modules=$1_$2 [L]


En commentant la première, la deuxième marche. Y'a-t-il un moyen de faire cohabiter les deux ? Je pensais que [L] suffisait mais apparement non.

Merci d'avance


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1873
Inscription: Dim Déc 17, 2006 22:08

Message le Lun Déc 01, 2008 17:46

pour les faire cohabiter il faut en modifier une : remplacer un / par _ ou si id est numérique c'est peut-être un critère de différenciation


keitboor
WRInaute impliqué
WRInaute impliqué
 
Messages: 321
Inscription: Lun Juil 19, 2004 13:03

Message le Lun Déc 01, 2008 17:53

Impeccable, merci webmasterlamogere :wink:



Est ce que tu pourrai m'expliquer la démarche à suivre pour palier à cela ? Merci.

 

Modérateurs: HawkEye, WebRankInfo, fandecine

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 Labs, Google Transit, Google Apps for your Domain

  • Test de lien (type de redirection)
    Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
  • Test HTTP header
    Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.
  • Test de positionnement sur data centers
    Cet outil vous permet d'afficher sur une seule page les résultats Google effectués sur de nombreux data centers (centres de données).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité