comment passer les parametres $1 ou $2
16 messages
• Page 1 sur 2 • 1, 2
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
- rootnono
- Nouveau WRInaute

- Messages: 8
- Inscription: 7 Sep 2004
comment passer les parametres $1 ou $2
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 :
apparaisse comme resultat :
Mon code .htacess :
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 ?
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 ?
- rootnono
- Nouveau WRInaute

- Messages: 8
- Inscription: 7 Sep 2004
deja lu cet article
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
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é

- Messages: 932
- Inscription: 3 Juil 2003
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.
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

- Messages: 8
- Inscription: 7 Sep 2004
suis d'accord mais...
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 :
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 :
Donc personne ne voit d'autres solutions que de Rewriter chaque page de mon site, avec une regle RewriteRule pour chaque page ?[/b]
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é

- Messages: 932
- Inscription: 3 Juil 2003
Re: suis d'accord mais...
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

- Messages: 8
- Inscription: 7 Sep 2004
du .htaccess
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 :
Dans le php qui va interpreter la vraie url ou celle cachée :
et dans le .htaccess :
Ca ne me parait pas optimiser et assez factoriser comme solution, si ?
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

- Messages: 311
- Inscription: 26 Avr 2004
- 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

- Messages: 8
- Inscription: 7 Sep 2004
oui,mais ...
Evidemment ça marche :
donc si je mets en url un truc du genre :
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:
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 ???
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

- Messages: 8
- Inscription: 7 Sep 2004
alors pas de suggestions
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 ?
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

- Messages: 3418
- Inscription: 28 Nov 2002
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 "
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é

- Messages: 1923
- Inscription: 6 Juin 2003
Re: alors pas de suggestions
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

- Messages: 8
- Inscription: 7 Sep 2004
merci pour ces precisions
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 ?
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

- Messages: 311
- Inscription: 26 Avr 2004
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).
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.
- 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é

- Messages: 1923
- Inscription: 6 Juin 2003
Re: merci pour ces precisions
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 ?
16 messages
• Page 1 sur 2 • 1, 2
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 :
- Gérer ses paramètres de tracking dans Google Webmaster Tools - 16-09-2009
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- Alexa se met à la recherche avec Google - 30-04-2002
- GlobalWarming Awareness2007 : dommages collatéraux chez Wikipedia - 22-01-2007
- Google veut-il dépasser les 20 milliards de pages de Yahoo ? - 09-09-2005
- Sortie de GoogleStats v2.01 - 02-03-2003
- Parts de marché des moteurs aux USA (Novembre 2007) - 02-01-2008
- L'extension Firefox OptimizeGoogle pour le référencement - 19-02-2010
Consultez la description détaillée des produits ou services de Google suivants : Google Alerts
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
