Version complète: sur le forum Webmaster Hub : Rewrite Rule (encore :s)
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
ElMoustiko
Salut les Hubbeurs,
me r'vla avec un problème de règle de réécriture blush.gif
C'est assez étrange, j'ai pas la même chose en local ou en ligne :gueule:

Je vous donne le topo
CODE
RewriteEngine on
RewriteRule ^administration/([^<>]+)/$    /studi-o-normes/$1    [L]


Donc, les urls du type "administration/QQCHOSE/" sont en fait des alias pour
"studi-o-normes/QQCHOSE.php"

En local, je met $1.php ça roule, c'est impec, mais en ligne, il faut que je mette $1 sans le .php pour que ça marche, déjà là c'est pas très logique.
Enfin, ici ça marche même pas, j'y viens, ma remarque précédente c'est pour cette règle :
CODE
RewriteRule ^([^<>]+)/$    /studi-o-normes/$1    [L]

Qui fait un alias de "QQCHOSE/" pour "/studi-o-normes/QQCHOSE.php" Donc en ligne $1 et en local $1.php Je comprend pas trop déjà là IMSTP6.gif

Donc, pour en revenir au problème, la première règle que je donne ne fonctionne pas, c'est plutôt étrange, parcequ'elle fonctionne en local et semble bien écrite...
J'ai aussi testé en mettant mon url à tester en dur
CODE
RewriteRule ^administration/ajout_crea/$    /studi-o-normes/ajout_crea.php    [L]


Mais rien ne se passe...
Je vous met le fichier htaccess complet
Version en ligne
CODE
RewriteEngine on
RewriteRule ^administration/([^<>]+)/$    /studi-o-normes/$1    [L]
RewriteRule ^creations/([0-9]+)_(.*)/$    /studi-o-normes/creations.php?id=$1    [L]
RewriteRule ^accueil/$    /studi-o-normes/    [L]
RewriteRule ^([^<>]+)/$    /studi-o-normes/$1    [L]

ErrorDocument 404    /studi-o-normes/err404/


Version local
CODE
RewriteEngine on
RewriteRule ^administration/([^<>]+)/$    /site_perso/$1.php    [L]
RewriteRule ^creations/([0-9]+)_(.*)/$    /site_perso/creations.php?id=$1    [L]
RewriteRule ^accueil/$    /site_perso/    [L]
RewriteRule ^([^<>]+)/$    /site_perso/$1.php    [L]

ErrorDocument 404    /site_perso/err404/


Il n'y a que la première règle qui déconne. (j'ai pas pu encore tester la 2ème en ligne, parceque pour ajouter une création, je dois utiliser une page qui est dans la zone d'admin et justement ma règle pour la zone d'admin foire !!

D'avance, merci
Thanh
yO,

essayes en remplaçant :
CODE
^administration/([^<>]+)/$


par
CODE
^administration/([0-9a-zA-Z-\.]+)/$
ElMoustiko
Non, rien y fait...
je test plein de trucs, et rien ne fonctionne, je comprend plus rien...
Déjà que je pigeais pas grand chose aux rewrite rule, là c'est encore pire :nono:

Même en mettant juste la règle qui devrait intervenir
CODE
RewriteEngine on

RewriteRule ^administration/([^<>]+)/$    /studi-o-normes/$1    [L]


Qui devrait faire ceci :
"studi-o-normes/administration/QQCHOSE/" => "studi-o-normes/QQCHOSE.php"

Ca foire et ça me fait "studi-o-normes/administration.php" à la place

Le bidule croit que $1 est équivalent à administration, allez savoir pourquoi... :gueule:
Thanh
et ça

CODE
^administration/([^<>]+)$
ElMoustiko
Nan, quedal...

C'est vraiment du grand n'importe quoi...

En fait le truc se contre fout de mon url, il me met administration.php si j'ai administration dans l'url et pis voilà... et je sais même pas comment il peut faire puisque rien ne lui dit de faire ça :s
Thanh
pk faire de l'url rewriting pour un module d'admin ?

blush.gif
ElMoustiko
Parceque moi aussi je le vaut bien biggrin.gif
Moi aussi, j'ai droit à la différence happy.gif

Et pis je me laisserais pas faire par ce petit con de .htaccess tongue.gif
Thanh
lol ok.

Le cordonnier veut être bien chaussé maintenant happy.gif
Dan
Salut,

Déjà je commencerais par supprimer le ^ devant administration.
Si le DOCUMENT_ROOT n'est pas déclaré de la même manière, cela évitera les différences de comportement entre local et remote.

De plus, la deuxième partie de la règle commençant par / me semble bizarre (et fausse)... la racine n'étant pas la même en local et en remote.

Dan
ElMoustiko
Donc, j'ai modifié en fonction de ce que tu indiquais Dan
CODE
RewriteRule administration/(.+)/$    $1.php    [L]

(avec ou sans le .php ça marche pas :s)

Comme ça ne faisait rien, j'ai testé avec les adresses "réelles"
CODE
RewriteRule administration/ajout_crea/$    ajout_crea.php    [L]


Mais rien n'y fait, je pige pas :s

Pourtant quand je regarde l'explication dans les publications du HUB
CODE
RewriteRule ^article/([0-9]+)/([0-9]+)\.html$  article.php?numero=$1&page=$2  [L]


Dans mon cas, ça ferait un truc du genre
CODE
RewriteRule ^administration/(.+)/$  $1.php  [L]


Enfin je comprend plus tellement ...
En plus le truc arrive à réécrire mes url et les interpreter alors que mon htaccess est vide de toute règle de réécriture et là c'est vraiment trop zarb...
ElMoustiko
Bon, j'ai trouvé un truc qui fonctionne... Mais je comprend pas pourquoi l'autre ne fonctionnait pas.
CODE
RewriteRule ^(.+)/(.+)/$    /studi-o-normes/$2.php    [L]


(note : ceci fonctionne aussi)
CODE
RewriteRule ^(.+)/ajout_crea/$    /studi-o-normes/ajout_crea.php    [L]


Mais ceci ne fonctionne pas
CODE
RewriteRule ^administration/(.+)/$    /studi-o-normes/$1.php    [L]


Allez comprendre pourquoi IMSTP6.gif
Dan
Il est où ton fichier .htaccess ? ... en as-tu un au niveau supérieur ?

Il faut le mettre dans /administration/ et laisser tomber le mot administration de ta règle smile.gif

Est-ce que ce répertoire s'appelle bien administration, tout en minuscules ?
ElMoustiko
En fait j'ai pas de dossier administration.
J'ai mon dossier principal
J'ai mes fichier administration.php, ajout_crea.php dans ce dossier
Et je veux que "administration/" utilise administration.php et "administration/ajout_crea/" utilise ajout_crea.php

Je crois que je vais pas plus me casser la tête, ça fonctionne comme ça... j'ai honte mais bon, j'ai perdu pas mal de temps, alors je préfère passer à autre chose, quitte à y revenir plus tard.

Mais si vous avez une méthode imparable, je suis tout ouïe bien sûr wink.gif

Merci à vous en tout cas d'avoir pris le temps de chercher une solution.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.