Aller au contenu

URL Rewriting : pb de syntaxe


Sujets conseillés

Salut,

Je ne trouve pas comment écrire la chose suivante :

SI le fichier demandé n'existe pas ALORS ré-écris l'url de telle façon (ça je sais)

SI cette nouvelle façon ne marche pas, alors ré-écris le encore, de telle autre façon

(j'ai des fichiers qui sont potentiellement à l'emplacement A ou à l'emplacement B)

Merci

Modifié par MarvinLeRouge
Lien vers le commentaire
Partager sur d’autres sites

tu peut créer une page qui se nommerais error.php par exemple, récupérant le GET errid (int) de type 404, 403, 500, 504, etc

Ensuite, dans le HTACCESS tu rewrite la page error.php avec la forme que tu désire et tu ajoute

ErrorDocument 404 /url_de_error.php_Rewritée

je n'ai pas testé, mais dans ma tête, ça parait possible ^^

Lien vers le commentaire
Partager sur d’autres sites

SI le fichier demandé n'existe pas ALORS ré-écris l'url de telle façon (ça je sais)

Je ne sais pas comment tu arrives à faire cela en Rewriting (avec une rewriteMap ?)

mais en théorie, je dirais qu'il suffit de faire :

si not found et rep <> Rep1 et rep <> rep2 => réécrire en Rep1

si not found et rep = Rep1 => réécrire en Rep2

Lien vers le commentaire
Partager sur d’autres sites

Je suis en train de fondre un fusible, j'ai essayé un peu tout, mais j'avoue que je m'y perds :

/admin

/theme

/webroot

  1. Cette structure est existante, et je dois faire avec. L'existence d'un dossier webroot est dû au fait qu'il existe des fichiers à la racine réelle, qui ne doivent pas être accessibles par le web, et qui doivent bien être hiérarchiquement au dessus du reste.

  2. A la racine, j'ai un .htaccess qui contient les choses suivantes :
    RewriteRule (.*\.(png|gif|jpg|jpeg|js|css|swf))$ webroot/img_handler.php?arg=$1 [L]
    RewriteRule ^$ webroot/ [L]
    RewriteRule (.+) webroot/$1 [L]


    Problème : la 1ère ligne fait passer toutes les requètes css, js et img à travers un gestionnaire php qui ne fait rien d'autre que des tests d'existence de fichiers à différents emplacements potentiels.
    Or, je n'en veux pas, car ça empêche de faire proprement du rewriting ailleurs (sur des images dont on veut générer des miniatures à la volée au besoin, par exemple). Je veux donc faire ça en vrai url-rewriting.

  3. Ce que je veux faire :
    • Toutes les requètes img, css ou js correspondant à l'admin doivent aller chercher la source dans le dossier admin
      (img|js|css)/admin/(.*) => /admin/webroot/$1/$2
    • SI ce fichier n'existe pas, aller chercher la source dans /theme/webroot/$1/$2
    • N'appliquer la dernière règle que pour les fichiers qui ne rentrent pas dans les cas précédents
    • Et qu'on puisse éventuellement faire du rewriting plus loin dans la structure (typiquement dans /webroot/img)

J'ai vraiment l'impression de me rendre fou avec ce truc, alors que le principe a l'air tout simple.

Modifié par MarvinLeRouge
Lien vers le commentaire
Partager sur d’autres sites

Personnellement, je ne vois pas comment on peut tester l'existence d'un fichier en Rewriting pur...

Et passer par un détournement de l'erreur 404 sera toujours lent.

Bon, mais en admettant que ton rewriting actuel fonctionne (personnellement, je ne vois pas comment la dernière ligne ne te génère pas une erreur 500... mais peut-être as-tu un autre htaccess dans webroot...), tu pourrais garder l'existant tout en ménageant de nouvelles possibilités :

par exemple si tu sors de la première règle, les urls avec un répertoire (= pas de slash dans le premier terme), tu peux mettre tes nouvelles images dans un répertoire "img" et faire ce que tu veux avec sans passer par le handler.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...