Question sur rewrite Cond

  • Auteur de la discussion Auteur de la discussion themoz
  • Date de début Date de début
Nouveau WRInaute
Bonjour,

J'ai lu parmi tous les billets de ce forum que si on voulait faire une règle d'url rewriting du style :
Code:
page1.php?id=var  page2.ph?id=$1
il fallait utiliser la fonction rewrite cond.
Est-ce exact ? Connaissez-vous un tuto complet sur cette utilisation, car j'avoue ne pas trop comprendre comment m'y prendre.
Merci.
 
WRInaute accro
RewriteCond indique une condition
RewriteRule est une règle d'écriture

Dans le cas que tu cites:

Code:
RewriteEngine On
RewriteRule ^page1.php?id=(.*)$ page2.php?id=$1 [L]

va te permettre de balancer toute url du style ...page1.php?id=### vers une page du style ...page2.php?id=###
 
Nouveau WRInaute
C'est ce que j'ai fait, mais seulement, je n'arrive pas à récupérer la variable $_GET dans ma nouvelle page.
Sur la page de destination, si je fais $_SERVER['QUERY_STRING'] ou $_GET['sujet'], je n'ai rien.
Je ne comprends pas pourquoi.
 
Nouveau WRInaute
Ben, non.
En fait cela me donne une page 404.
J'ai refait un test avec la fameuse règle ^nexistepas.html$ trouve.html et ça fonctionne.

J'ai d'autres éléments dans mon fichier htacess, intégrés par l'hébergeur. Est-ce que cela peut jouer ?

# -FrontPage-
IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*
<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>

AuthName www.domain.com
AuthUserFile /home/httpd/vhosts/www.domaine.com/web/xxxxx/xxx.pwd
AuthGroupFile /home/httpd/vhosts/www.arnaudmeunier.com/web/xxx/xxx.grp
ErrorDocument 404 /index.php

Est-ce que cela peut jouer ? Je place mes règles après ces lignes.
Merci.
 
Nouveau WRInaute
Elle indique juste "The requested URL /blog/mongraphisme.php was not found on this server."

mongraphisme.php est le nom de page que je souhaite renvoyer vers une page de mon serveur.
 
WRInaute impliqué
HawkEye_TpfH a dit:
RewriteCond indique une condition
RewriteRule est une règle d'écriture

Dans le cas que tu cites:

Code:
RewriteEngine On
RewriteRule ^page1.php?id=(.*)$ page2.php?id=$1 [L]

va te permettre de balancer toute url du style ...page1.php?id=### vers une page du style ...page2.php?id=###

Complètement faux.
Le mod_rewrite intervient seulement jusqu´au ?, et ne modifie donc pas les variables GET...
Pour qu´elles suivent, il faut un drapeau query string append: [QSA]

En cas, jette un coup d´oeil sur un petit tuto que j´ai fait:
h**p://isasisarl.free.fr/index.php?include=apache_rewriting
 
WRInaute impliqué
themoz a dit:
Elle indique juste "The requested URL /blog/mongraphisme.php was not found on this server."

mongraphisme.php est le nom de page que je souhaite renvoyer vers une page de mon serveur.

Quand tu utilise un .htaccess dans un répertoire autre que racine, la syntaxe correcte est:
RewriteRule ^page1\.php$ /le_rep/page2.php [QSA,L]
 
Nouveau WRInaute
Ca a l'air de fonctionner avec l'écriture suivante :
RewriteRule ^blog/mongraphisme\.php$ /blog/intro.php [QSA,L]

merci !
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut