comment passer les parametres $1 ou $2

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

rootnono
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 8
Inscription: 7 Sep 2004

comment passer les parametres $1 ou $2

Message le Mar Sep 07, 2004 9:47

Débutant en url rewriting, je ne vois pas comment passer les parametres $1 ou $2 dans le fichier .htacess.
Je m'explique : je veux que :
Code: Tout sélectionner
http://127.0.0.1/index.php?action=presentation et
http://127.0.0.1/index.php?action=annuaire


apparaisse comme resultat :
Code: Tout sélectionner
http://127.0.0.1/presentation/index.html et
http://127.0.0.1/annuaire/index.html

Mon code .htacess :
Code: Tout sélectionner
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^index.html$ index.php [L]
RewriteRule ^presentation/.*\.html$ index.php?action=presentation [L]
RewriteRule ^annuaire/.*\.html$ index.php?action=annuaire [L]

C'est pas pratique comme je fais car il va falloir que je rewrite chaque page, il doit y avoir un moyen plus simple non ?


lou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 477
Inscription: 9 Mai 2004

Message le Mar Sep 07, 2004 9:50

RewriteRule ^forum/(.*),(.*)/(.*)$ index.php?rub=forum&s=$1&start=$2&$3 [L]
par exemple,

je te conseil de revoir une doc sur l'url rewriting, si mes souvenirs sont bon il y en a une très bien faite sur le site de spip...

rootnono
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 8
Inscription: 7 Sep 2004

deja lu cet article

Message le Mar Sep 07, 2004 10:18

j'ai deja lu cet article, mais cela ne résout pas mon problème.
Je ne comprends pas comment stocker les infos dans les variables utilisées et citées couramment dans les exemples que je lis.
$1 ou $2 : on leur transmet comment les valeurs souhaitées et on les exploitent comment en php ?
merci

corvisart
WRInaute impliqué
WRInaute impliqué
 
Messages: 932
Inscription: 3 Juil 2003

Message le Mar Sep 07, 2004 10:39

en PHP ca change rien, elles gardent leur valeur.
tu renomes tes liens href
h**p://127.0.0.1/index.php?action=presentation
en
h**p://127.0.0.1/presentation/index.html
et
l'htaccess "RewriteRule" en
h**p://127.0.0.1/index.php?action=presentation
donc ca marche.

rootnono
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 8
Inscription: 7 Sep 2004

suis d'accord mais...

Message le Mar Sep 07, 2004 10:57

Oui, mais je dois faire ça pour chaque page : il faut donc que je change tous les liens à l'intérieur du site pour que les repertoires virtuels soient pris en compte.
Je pensais qu'il y avait une maniere plus courte et plus efficace que de devoir ecrire pour chaque page de mon site :
Code: Tout sélectionner
RewriteRule ^annuaire/index\.html$ index.php?action=annuaire [L]
RewriteRule ^annuaire/xxx\.html$ index.php?action=xxx [L]
.....................................................................
.....................................................................

Y a-til une solution, à moins que le fait de devoir diviser mes liens en repertoire puis page.html ne correspondent pas trop à la logique de url rewriting. Peut être dans mon php, ça aurait plus lourd, inutile mais plus pertinent si le test s'effectuai sur :
Code: Tout sélectionner
index.php?action=annuaire&&ssaction=xxx

Donc personne ne voit d'autres solutions que de Rewriter chaque page de mon site, avec une regle RewriteRule pour chaque page ?[/b]

corvisart
WRInaute impliqué
WRInaute impliqué
 
Messages: 932
Inscription: 3 Juil 2003

Re: suis d'accord mais...

Message le Mar Sep 07, 2004 11:09

rootnono a écrit:Oui, mais je dois faire ça pour chaque page : il faut donc que je change tous les liens à l'intérieur du site pour que les repertoires virtuels soient pris en compte.
Je pensais qu'il y avait une maniere plus courte et plus efficace que de devoir ecrire pour chaque page de mon site :
Code: Tout sélectionner
RewriteRule ^annuaire/index\.html$ index.php?action=annuaire [L]
RewriteRule ^annuaire/xxx\.html$ index.php?action=xxx [L]


J'ai pas compris. Tu parles du htaccess ou des pages du site
Pour chaque page, au lieu de href=h**p://127.0.0.1/index.php?action=presentation
tu écris href=h**p://127.0.0.1/presentation/index.html

rootnono
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 8
Inscription: 7 Sep 2004

du .htaccess

Message le Mar Sep 07, 2004 11:33

Oui je parlais des modifications plus efficaces du .htaccess. Etant feignant, je cherche la meilleure solution pour ne pas à avoir écrire des RewriteRule pour chaque page . Je sais qu'il faut que je modifie tous les liens a l'intérieur de mon site.
C'est ces histoires de $1 et $2 citées dans les exemples qui fait que je pensais analyser $1 ou $2 et faire mon script php en fonction de ça.
En plus clair :
Dans le html :
je clique sur un lien :
Code: Tout sélectionner
<a href="htp://127.0.0.1/annuaire/index.html">annuaire</a>
<a href="htp://127.0.0.1/annuaire/presentation.html">annuaire</a>

Dans le php qui va interpreter la vraie url ou celle cachée :
Code: Tout sélectionner
switch ($_GET["action"]{
case "annaire":
include (page1.html);
break;
case "presentation":
include (page2.html);
break;
}

et dans le .htaccess :
Code: Tout sélectionner
RewriteRule ^/annuaire/index\.html$ index.php?action=annuaire [L]
RewriteRule ^/annuaire/presentation\.html$ index.php?action=presentation [L]

Ca ne me parait pas optimiser et assez factoriser comme solution, si ?


Gaëtan R.
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 311
Inscription: 26 Avr 2004

Message le Mar Sep 07, 2004 12:19

Code: Tout sélectionner
RewriteRule ^annuaire/(.+)\.html$ index.php?action=$1 [L]

Est-ce que ça marche de cette façon ?

Quand tu auras -http://www.site.tld/annuaire/presentation.html
Ça rewritera -http://www.site.tld/annuaire/index.php?action=presentation.
De la même façon si l'url est -http://www.site.tld/annuaire/presentation.html.

rootnono
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 8
Inscription: 7 Sep 2004

oui,mais ...

Message le Mar Sep 07, 2004 14:00

Evidemment ça marche :
donc si je mets en url un truc du genre :
Code: Tout sélectionner
<a href=http://www.site.com/annuaire/index.html"">annuaire</a>
<a href=http://www.site.com/annuaire/xxxxxxxxxx.html"">test</a>

Mon problème ça n'est pas que ça marche pas, c'est que je suis obligé de faire correpsondre à chaque url exotique une url appropriée. Je ne vais pas par exemple ecrire ds le .htaccess:
Code: Tout sélectionner
RewriteRule ^annuaire/(.+)\.html$ index.php?action=annuaire [L]

car cela ne correspondra qu'au rewrite d'una page.
C'est quoi ce $1, c'est une maniere de dire que c'est une variable, mais c'est faux car on ne transmet rien dans cette entité et on ne l'exploite pas.
J'en conclut qu'il faut par chaque url, rewrité les pages pour prendre en compte toutes mes pages, ça n'est pas très pratique ???

rootnono
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 8
Inscription: 7 Sep 2004

alors pas de suggestions

Message le Mar Sep 07, 2004 17:37

J'attends les suggestions des connaisseurs de l'url rewriting ?
Faites moi comprendre ce que l'on entends par ces variables : c'est utilisé pour une explication claire de l'url rewriting ou $1 et $2 sont vraiment des variables dans que l'on gère à partir du .htaccess ?


Kmacleod
WRInaute accro
WRInaute accro
 
Messages: 3418
Inscription: 28 Nov 2002

Message le Mar Sep 07, 2004 17:46

Il y a un problème de logique dans cette contruction, elle en devient compliqué.

Essayons de faire simple !
Le répertoire c'est annuaire, il est fixe pour tout l'UR, donc c'est pas une variable (si je me trompe on corrige ;-))

le mot action doit être une action
soit index
soit présentation
soit ce_que_tu_veux

et on a trois pages

index.html
presentation.html
ce_que_tu_veux.html
(ce ne sont que page1.html, page2.html .... mais renommées)

ensuite
include ($_GET["action"].html)

on peut faire de même avec l'UR, il faut reflechir en générique, et non en particulier avec conditions
"inclusion de la page dont le code est donné par le contenu de la variable action "


George Abitbol
WRInaute passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

Re: alors pas de suggestions

Message le Mar Sep 07, 2004 21:37

rootnono a écrit:J'attends les suggestions des connaisseurs de l'url rewriting ?
Faites moi comprendre ce que l'on entends par ces variables : c'est utilisé pour une explication claire de l'url rewriting ou $1 et $2 sont vraiment des variables dans que l'on gère à partir du .htaccess ?


$1 et $2 sont des "références arrière" (backtracks). Ce ne SONT PAS des variables que tu passes à la page de destination, ce SONT en quelque sorte des variables internes à la règle de réécriture. Si tu croises un jour des expressions régulières, tu seras en terrain connu. Ces références correspondent aux sous-chaines situées dans les parenthèses de la première partie de la règle de réécriture.

Exemple :
/annuaire/^(.+)\.html$ ---> index.php?page=$1

Ceci signifie que toute demande d'url de la forme /annuaire/trucbidulemachin.html DOIT être renvoyée en réalité vers l'adresse index.php?page=trucbidulemachin

Pour ce qui est des variables au sein de tes pages, ici tu as $_GET['page'] qui vaudra trucbidulemachin

A toi donc de savoir de quelles variables tu as besoin dans ton script final, et en fonction de ça quelles sont les URL que tu veux utiliser.

A voir :
http://www.spip-contrib.net/article106.html

Fred

rootnono
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 8
Inscription: 7 Sep 2004

merci pour ces precisions

Message le Mer Sep 08, 2004 9:27

ces explications sont très claires, merci messieurs.
Les backtracks $1 et $2 ne sont donc jamais utilisés réellement dans un fichier .htacess.
Je ne verrai jamais dans un fichier .htaccess :
[code]
/annuaire/^(.+)\.html$ ---> index.php?page=$1
[/code
Le $1 correspond en réalité à une de mes variales predefinies.
Mais la solution pour moi alors c'est de réellement réecrire pour chaque page les url (en absolue) au sein du document html, de gerer les variables dans mon script php (include) et
de faire ]un rewrite de chaque page en fonction de chaque condition du style :
[code]
/annuaire/^index\.html$ ---> index.php?page=annuaire
/annuaire/^presentation\.html$ ---> index.php?page=presentation
[/code]
Je ne vais pas utiliser l'expression reguliere (.+) car n'importe quel fichier correspondrait
au fait de faire l'action suivante index.php?page=annuaire et pas index.php?page=presentation ?


Gaëtan R.
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 311
Inscription: 26 Avr 2004

Message le Mer Sep 08, 2004 9:42

Si tu ne souhaites pas utliser (.+) utilise ([a-z]+) si tu veut être sûr qu'on ne passe que des lettres (c'est plus restrictif).

Code: Tout sélectionner
/annuaire/^([a-z]+)$\.html ---> index.php?page=$1


Autrement, je ne vois pas ce qui t'embête, le code qu'on t'a donné remplis le rôle que tu lui demande : les pages sont bien rewritées en fonction de chaque condition, tu n'as pas besoin de spécifier annuaire ou presentation dans le htaccess, il va reconnaitre n'importe quel suite de lettres qui sera placée entre annuaire/{ta_page}.html et indiquera à ton script : index.php?page={ta_page}.

J'espère avoir compris ta demande. :)


George Abitbol
WRInaute passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

Re: merci pour ces precisions

Message le Mer Sep 08, 2004 9:56

rootnono a écrit:Les backtracks $1 et $2 ne sont donc jamais utilisés réellement dans un fichier .htacess.


Ben justement si, elles ne sont utilisées que là, d'ailleurs.

Je ne verrai jamais dans un fichier .htaccess :
Code: Tout sélectionner
/annuaire/^(.+)\.html$ ---> index.php?page=$1


Au contraire, tu le verras souvent.

Le $1 correspond en réalité à une de mes variales predefinies.


Ben... non, pas du tout.

ces explications sont très claires, merci messieurs.


Ah ? :D

comment passer les parametres $1 ou $2

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