MarvinLeRouge Posté 29 Avril 2011 Posté 29 Avril 2011 (modifié) 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 Merci Modifié 29 Avril 2011 par MarvinLeRouge
Aenoa Posté 29 Avril 2011 Posté 29 Avril 2011 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
Remi Posté 29 Avril 2011 Posté 29 Avril 2011 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
MarvinLeRouge Posté 29 Avril 2011 Auteur Posté 29 Avril 2011 (modifié) 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 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. 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. 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é 29 Avril 2011 par MarvinLeRouge
Remi Posté 30 Avril 2011 Posté 30 Avril 2011 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.
Message populaire. MarvinLeRouge Posté 30 Avril 2011 Auteur Message populaire. Posté 30 Avril 2011 Ah ben voilà, veni vidi, et quand même fini par vici : RewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(/)*(img|js|css)/admin/(.*)$ /admin/webroot/$2/$3 [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(/)*admin/(img|js|css)/(.*)$ /admin/webroot/$2/$3 [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(/)*admin/webroot/(img|js|css)/(.*)$ /template_whale/webroot/$2/$3 [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteRule (.+) webroot/$1 [L] 1
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant