.htaccess, difficulté de réécriture d'url...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : .htaccess, difficulté de réécriture d'url...

par jojolapine » 28 févr. 2008, 13:15

ok merci pour la gourmandise, je fait faire des essais de suite ;)
En attendant, j'avais trouvé une solution alternative, rediriger avec le flag [R] tout les dossier sans slash, vers les dossiers avec slash...
Je vais voir ce que je retient ;)

par Sékiltoyai » 27 févr. 2008, 22:01

Pour inverser la gourmandise, place l'opérateur '?' derrière tout opérateur ('*', '+', '?') quantitatif.

par jojolapine » 27 févr. 2008, 21:41

Pourquoi ne pas le faire dans mes liens html?
Parce que je veux que tout soit possible :)
Pour te donner un exemple, lorsque je viens sur le forum, je tappe phpfrance.com/forums et ça m'amène directement sur le site (il n'y a pas d'url rewriting içi, mais c'est pour l'exemple)
donc moi je veux qu'on puisse aller dans mes "repertoires virtuels" avec ou sans slash!

J'ai avancé un peu sur le problème, j'ai fait test sur une page php avec preg_replace, pour que ce soit plus simple, et voici ce que j'ai réussit à faire comme pattern qui fonctionne:

Code : Tout sélectionner

#^((([a-z0-9]+/?)*)/?)?(([a-z0-9]+)\.html)?$#U
ça fait exactement ce que je souhaite, seulement ça ne marche pas sur un .htaccess, car je ne sais pas utiliser la directive U (gourmandise), donc si vous aviez une solution à me donner?
Pour rendre utilisable ce pattern PCRE sous .htaccess...
Je suis preneur!
Merci!!

par Alkann » 27 févr. 2008, 20:36

Pourquoi ne tentes tu pas de modifier directement tes liens dans ton HTML en ajoutant automatiquement le slash lors de la création de tes urls réécritent.

par jojolapine » 27 févr. 2008, 19:23

Euh concernant la réponse de hakazizi...
C'est vrai que j'ai été un peu bête :lol:
Donc c'est réglé ;)
Le seul problème qui persiste c'est cette histoire de slash ou pas slash...
Je me suis peut-être mal exprimé Alkann, mais je ne souhaite rien faire de particulier pour tel ou tel répertoire (sauf au départ pour admin, mais c'est réglé ;))
En fait je veux que toute url contenant de 0 à n répertoire, suivie ou non d'un nom de fichier en .html
soit rediriger vers mon controlleur, donc ça donnerais ça (quelques exemple concret)

Code : Tout sélectionner

exemple/fichier.html
donnerait

Code : Tout sélectionner

controlleur.php?p=fichier&d=exemple/

Code : Tout sélectionner

autreexemple/dir/redir/fichier.html
donnerait

Code : Tout sélectionner

controlleur.php?p=fichier&d=autreexemple/dir/redir/

Code : Tout sélectionner

directory/
donnerait

Code : Tout sélectionner

controlleur.php?p=&d=directory/
et pour finir

Code : Tout sélectionner

dir/dir2
donnerait

Code : Tout sélectionner

controlleur.php?p=&d=dir/dir2/
Voilà
Donc pour l'instant ça fonctionne presque, sauf que je ne peut pas dire "1 slash ou pas si pas de nom de fichier" donc j'aimerai faire une redirection "visible" pour rajouter un slash à la fin de l'url quand il y en a besoin...

Re: .htaccess, difficulté de réécriture d'url...

par hakazizi » 27 févr. 2008, 15:32

Je ne comprend pas tres bien la ou tu veut en venir.
si tu ne veut pas de l'url rewritte dans ton admin.
tu n'a cas les ignorer.
et faire tes lien comme suit
<a href="admin/?page=acceuil">acceuil</a>
voila c'est aussi simple que sa.
sa fonctionnera pareil :wink:

par Alkann » 27 févr. 2008, 15:24

Bonjour,

Pour ton dossier admin, tu peux ajouter la ligne suivante :

Code : Tout sélectionner

RewriteRule ^admin/(.*)$ admin/$1 [L]
Pour ce qui est du dossier extension/dir tu peux essayer un truc dans ce genre :

Code : Tout sélectionner

RewriteRule ^exemple/dir/(.*).html$ controlleur.php?p=$1&d=exemple/dir [L]
Ca te donnerait donc au final :

Code : Tout sélectionner

Options +FollowSymlinks RewriteEngine on RewriteRule ^admin/(.*)$ admin/$1 [L] RewriteRule ^exemple/dir/(.*).html$ controlleur.php?p=$1&d=exemple/dir [L] RewriteRule ^(([a-z0-9-]+/)*([a-z0-9-]+/)?)(([a-z0-9-]+)\.html)?$ /version2/controlleur.php?p=$5&d=$1 [L]
J'espère que cela t'aidera ;)

.htaccess, difficulté de réécriture d'url...

par jojolapine » 27 févr. 2008, 15:15

Bonjour à tous,
je souhaite mettre en place de l'url rewriting sur un site, et je n'arrive pas à faire ce que je veux:
En gros je souhaiterais que toute url du type:

Code : Tout sélectionner

^admin/.*$
soit redirigée telle quelle...
Car je ne souhaite pas faire d'url rewriting dans la partie admin du site...
Et sur le reste du site, je souhaite que toute url (peut importe les sous-répertoires, le nom du fichier ou pas...) soit redirigée vers mon controlleur.php.
Voici ce que j'ai pour l'instant:

Code : Tout sélectionner

Options +FollowSymlinks RewriteEngine on RewriteRule ^(([a-z0-9-]+/)*([a-z0-9-]+/)?)(([a-z0-9-]+)\.html)?$ /version2/controlleur.php?p=$5&d=$1 [L]
Ce code fonctionne pour l'instant pour les urls "non-administratives" a une exeption, je n'arrive pas à ce que

Code : Tout sélectionner

exemple/dir
redirige vers

Code : Tout sélectionner

controlleur.php?p=&d=exemple/dir
Donc je souhaitait faure une "réécriture visible" (j'entend par là un genre de header() dans mon .htaccess) sui me rajouterais un / à chaque fin d'url si il n'yen a pas et si il n'y a pas de nom de fichier.

ça c'est le premier point, et ensuite, j'aimerais rajouter la redirection à l'indentique pour les url

Code : Tout sélectionner

admin.*
MErci d'avance pour vos solutions ;)