Webmaster Hub: URL Rewriting : pb de syntaxe - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

URL Rewriting : pb de syntaxe Noter : -----

#1 L'utilisateur est hors-ligne   MarvinLeRouge 

  • Groupe : Hubmaster
  • Messages : 771
  • Inscrit(e) : 22-novembre 04
  • Genre:Homme
  • Localisation:Toulon

Posté 29 avril 2011 - 13:27

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

Ce message a été modifié par MarvinLeRouge - 29 avril 2011 - 13:36.

Lorsqu'un lapin rouge naît, on le nomme Marvin, en mémoire de Marvin 1er qui détruisit la ville de Zautamauxime. Puis on le bannit car les lapins rouges, ça porte malheur.
0

#2 L'utilisateur est hors-ligne   Aenoa 

  • Groupe : Membre+
  • Messages : 282
  • Inscrit(e) : 28-octobre 10
  • Genre:Homme
  • Localisation:Tournai
  • Société:Aucune

Posté 29 avril 2011 - 15:33

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 ^^
Mon (très petit) site personnel

"Ce n'est pas parce que l'on ne sait pas, que l'on ne peut pas. L'on peut tout apprendre, avec de la motivation."
0

#3 L'utilisateur est hors-ligne   Remi 

  • Groupe : Membre+
  • Messages : 932
  • Inscrit(e) : 28-juin 04
  • Genre:Homme
  • Société:Studio Amarante

Posté 29 avril 2011 - 15:53

Voir le messageMarvinLeRouge, le 29 avril 2011 - 13:27, dit :

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
Un lieu magique près d'Aix-en-Provence Château Grand Boise : location de prestige, domaine viticole, face à la Montagne Sainte Victoire. Et un beau site de Calvados et cidre...
0

#4 L'utilisateur est hors-ligne   MarvinLeRouge 

  • Groupe : Hubmaster
  • Messages : 771
  • Inscrit(e) : 22-novembre 04
  • Genre:Homme
  • Localisation:Toulon

Posté 29 avril 2011 - 20:08

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.

Ce message a été modifié par MarvinLeRouge - 29 avril 2011 - 20:09.

Lorsqu'un lapin rouge naît, on le nomme Marvin, en mémoire de Marvin 1er qui détruisit la ville de Zautamauxime. Puis on le bannit car les lapins rouges, ça porte malheur.
0

#5 L'utilisateur est hors-ligne   Remi 

  • Groupe : Membre+
  • Messages : 932
  • Inscrit(e) : 28-juin 04
  • Genre:Homme
  • Société:Studio Amarante

Posté 30 avril 2011 - 11:12

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.
Un lieu magique près d'Aix-en-Provence Château Grand Boise : location de prestige, domaine viticole, face à la Montagne Sainte Victoire. Et un beau site de Calvados et cidre...
0

#6 L'utilisateur est hors-ligne   MarvinLeRouge 

  • Groupe : Hubmaster
  • Messages : 771
  • Inscrit(e) : 22-novembre 04
  • Genre:Homme
  • Localisation:Toulon

Posté 30 avril 2011 - 16:07

Ah ben voilà, veni vidi, et quand même fini par vici :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(/)*(img|js|css)/admin/(.*)$ /admin/webroot/$2/$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(/)*admin/(img|js|css)/(.*)$ /admin/webroot/$2/$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(/)*admin/webroot/(img|js|css)/(.*)$ /template_whale/webroot/$2/$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule    (.+) webroot/$1 [L]

Lorsqu'un lapin rouge naît, on le nomme Marvin, en mémoire de Marvin 1er qui détruisit la ville de Zautamauxime. Puis on le bannit car les lapins rouges, ça porte malheur.
1

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)