Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  1. #1
    Membre du Club Avatar de Squalthor
    Homme Profil pro
    Autodidacte
    Inscrit en
    juillet 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : juillet 2006
    Messages : 171
    Points : 54
    Points
    54

    Par défaut [URL rewriting] Rediriger toutes les images

    Bonsoir,

    J'essaie d'écrire une règle me permettant d'aller chercher toutes les images dans un même répertoire, sans afficher le chemin complet pour ne pas montrer la structure de mon site.

    Mais là je sèche, voir pire...
    Peu importe les essai ça ne marche pas, je suis quasiment sûr que parmi mes essais certains auraient dû fonctionner !

    Voici la règle qui me semble la plus correcte, mais qui ne fonctionne pas...
    RewriteRule ^(.*+[png-jpg-jpeg-gif]+)$ /chemin/du/repertoire/$1 [QSA,NC,L]
    Pourriez-vous me confirmer, ou pas, si cette règle devrait fonctionner svp ?

    Je vous remercie.

    Cordialement, Squal.

  2. #2
    Membre du Club Avatar de Squalthor
    Homme Profil pro
    Autodidacte
    Inscrit en
    juillet 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : juillet 2006
    Messages : 171
    Points : 54
    Points
    54

    Par défaut

    En regardant de plus près dans les logs d'apache j'ai cette ligne concernant cette image:
    [02/Jan/2013:14:19:17 +0100] "GET /gif.gif HTTP/1.1" 404 422
    Ce que je ne comprend pas c'est que des règles ayant fonctionnées dans le passé ne fonctionne actuellement pas.

  3. #3
    Rédacteur/Modérateur
    Avatar de _Mac_
    Inscrit en
    août 2005
    Messages
    9 407
    Détails du profil
    Informations forums :
    Inscription : août 2005
    Messages : 9 407
    Points : 10 952
    Points
    10 952

    Par défaut

    Le "*+" ne me paraît pas correct : * et + sont des multiplicateurs et ne peuvent pas logiquement apparaître l'un après l'autre. Je supprimerais au moins le +.

    Par ailleurs, ta syntaxe n'est pas la plus adaptée. La syntaxe idoine me semble plutôt être celle-ci :
    Code :
    RewriteRule ^(.*)\.(png|jpg|jpeg|gif)$ /chemin/du/repertoire/$1.$2 [NC,L]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  4. #4
    Membre du Club Avatar de Squalthor
    Homme Profil pro
    Autodidacte
    Inscrit en
    juillet 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : juillet 2006
    Messages : 171
    Points : 54
    Points
    54

    Par défaut

    Bonsoir Mac,

    Merci pour ton aide !
    J'ai testé ta règle, malheureusement elle ne fonctionne pas, je me demande si mon serveur n'a pas un problème de configuration.
    Mais mes autres règles fonctionnent...
    J'ai retrouver une règle me permettant de rediriger les images vers le répertoire voulu, mais c'est pas la perfection que j'aimerais étant donné que je dois ajouter "img_" devant les images:

    ^img_(.+[png-jpg-jpeg-gif]+)$ /moteur/interface/images/$1
    As-tu testé, ou es-tu sûr de ta règle s'il te plait ?
    J'aimerais savoir si c'est un défaut d'interprétation de mon serveur (OVH/Squeeze).

    Merci !

    Cordialement, Squal

  5. #5
    Rédacteur/Modérateur
    Avatar de _Mac_
    Inscrit en
    août 2005
    Messages
    9 407
    Détails du profil
    Informations forums :
    Inscription : août 2005
    Messages : 9 407
    Points : 10 952
    Points
    10 952

    Par défaut

    Citation Envoyé par Squalthor Voir le message
    étant donné que je dois ajouter "img_" devant les images
    Ca sent le conflit avec une autre règle de réécriture, ça. Tu peux donner le contenu complet du .htaccess ?

    Je ne crois pas trop à un problème avec la négociation de contenu à cause de l'erreur 404, mais pourquoi pas. Essaie d'activer ou désactiver la négociation de contenu, pour voir :
    ou

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  6. #6
    Membre du Club Avatar de Squalthor
    Homme Profil pro
    Autodidacte
    Inscrit en
    juillet 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : juillet 2006
    Messages : 171
    Points : 54
    Points
    54

    Par défaut

    Bonjour Mac,

    Voici le contenu de mon .htaccess:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Options +FollowSymLinks
    SetEnv MAGIC_QUOTES 0
    php_flag magic_quotes_gpc off
    php_flag magic_quotes_runtime off
    php_flag display_errors on
    php_flag allow_url_fopen off
    RewriteEngine on
    
    RewriteBase /
    FileETag none
    
    ReWriteCond %{SERVER_PORT} !^80$
    RewriteCond %{HTTP_HOST} !^dev\.(.*) [NC]
    RewriteCond %{HTTP_HOST} !^iteractif$ [NC]
    RewriteRule ^(.*)$ http://dev.iteractif.com/$1 [QSA,R=301,NC,L]
    
    
    ############### Images #######################
    RewriteRule ^img_(.+[png-jpg-jpeg-gif]+)$ /chemin/vers/images/$1 [QSA,NC,L]
    ############### css#######################
    RewriteRule ^css\.css$ /chemin/vers/css.css [QSA,NC,L]
    ############### Js #######################
    RewriteRule ^jquery\.js$  /chemin/vers/jquery/jquery-1.8.3.js [QSA,NC,L] #Jquery
    RewriteRule ^js\.js$  /chemin/vers/js.classe.js [QSA,NC,L]
    
    
    ############### pages ####################
    RewriteRule ^([_0-9a-zA-Z/-])?$ /index.php#$1 [QSA,NC,L]

    La négociation de contenu ne change rien.

    Encore merci de prendre le temps pour m'aider !

    Cordialement, Squal.

  7. #7
    Rédacteur/Modérateur
    Avatar de _Mac_
    Inscrit en
    août 2005
    Messages
    9 407
    Détails du profil
    Informations forums :
    Inscription : août 2005
    Messages : 9 407
    Points : 10 952
    Points
    10 952

    Par défaut

    Citation Envoyé par Squalthor Voir le message
    As-tu testé, ou es-tu sûr de ta règle s'il te plait ?
    Non, je n'ai pas testé ma règle, c'est une syntaxe que j'ai écrite de mémoire.

    Je ne vois pas de conflit dans ta configuration donc en effet, ça doit être un problème de syntaxe. Etant donné qu'une approche similaire fonctionne pour jquery.js, je te propose de commencer par un test simple sur une image bien précise, puis d'élargir progressivement le filtre. Par exemple, tu commences avec l'image toto.jpg qui existe bien dans le répertoire /chemin/vers/images :
    Code :
    RewriteRule ^toto\.jpg$ /chemin/vers/images/toto.jpg [QSA,NC,L]
    et si ça marche, élargit le filtre à tous les .jpg :
    Code :
    RewriteRule ^(.*\.jpg)$ /chemin/vers/images/$1 [QSA,NC,L]
    et si ça marche, on élargit encore :
    Code :
    RewriteRule ^(.*)\.(jpg)$ /chemin/vers/images/$1.$2 [QSA,NC,L]
    et on devrait aboutir à ma syntaxe :
    Code :
    RewriteRule ^(.*)\.(jpg|gif)$ /chemin/vers/images/$1.$2 [QSA,NC,L]
    Si tu accès à la configuration centrale d'Apache (httpd.conf), actives le debug de mod_rewrite pour comprendre à un moment pourquoi ça ne marche plus :
    Code :
    1
    2
    RewriteLog /chemin/vers/fichier.log
    RewriteLogLevel 9

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  8. #8
    Membre du Club Avatar de Squalthor
    Homme Profil pro
    Autodidacte
    Inscrit en
    juillet 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : juillet 2006
    Messages : 171
    Points : 54
    Points
    54

    Par défaut

    Edition: J'ai écris trop vite je fais des controles et je met à jour...

    Voilà, désolé je me suis un peu trop empressé, du coup je n'avais pas fais les choses correctement.

    Le debug rewrite est maintenant activé.
    Dès la tentative numéro 2 ça ne fonctionne pas.
    Voici ce que le debug me dit:
    [error] [client 78.250.248.83] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://ip_du_serveur.com/
    [Thu Jan 03 20:22:03 2013] [debug] core.c(3063): [client 78.250.248.83] r->uri = /dossier/images/dossier/images/dossier/images/dossier/images/dossier/images/dossier/images/dossier/images/dossier/images/dossier/images/dossier/images/chrome_logo.gif, referer: http://ip_du_serveur.com/
    78.250.248.83 - - [03/Jan/2013:20:22:03 +0100] "GET /chrome_logo.gif HTTP/1.1" 500 727 "http://ip_du_serveur.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.11) Gecko/20100101 Firefox/10.0.11 Iceweasel/10.0.11"
    Le message en gras apparait 4 ou 5 fois de suite, y a récursivité et ce peu importe si je met un / devant le nom de l'image...

  9. #9
    Rédacteur/Modérateur
    Avatar de _Mac_
    Inscrit en
    août 2005
    Messages
    9 407
    Détails du profil
    Informations forums :
    Inscription : août 2005
    Messages : 9 407
    Points : 10 952
    Points
    10 952

    Par défaut

    En effet, j'avais oublié de vérifier les boucles infinies. C'est la raison pour laquelle ton img_ est obligatoire pour que ça mache. Car en effet, le filtre ^(.*\.jpg)$ matche des URL simples http://site.com/toto.jpg mais aussi la réécriture /chemin/vers/images/toto.jpg. Ce n'est pas le cas pour jquery.js car ton filtre est ultra-spécifique.

    Bref, 2 solutions : faire un filtre plus spécifique ou ajouter une condition. Je pense que le premier cas est jouable étant donné ton exemple sur jquery : si j'ai bien compris ton site, toutes les images sont supposées se trouver (virtuellement) à la racine du site, ce qui signifie que le caractère / ne peut pas se retrouver dans le chemin vérifié par RewriteRule. Me trompe-je ? Si non, il s'agit tout simplement de remplacer .* dans mes règles par [^/]* :
    Code :
    RewriteRule ^([^/]*\.jpg)$ /chemin/vers/images/$1 [QSA,NC,L]
    Code :
    RewriteRule ^([^/]*)\.(jpg)$ /chemin/vers/images/$1.$2 [QSA,NC,L]
    Code :
    RewriteRule ^([^/]*)\.(jpg|gif)$ /chemin/vers/images/$1.$2 [QSA,NC,L]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  10. #10
    Membre du Club Avatar de Squalthor
    Homme Profil pro
    Autodidacte
    Inscrit en
    juillet 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : juillet 2006
    Messages : 171
    Points : 54
    Points
    54

    Par défaut

    Bonjour Mac !

    Tu as résolu mon problème, tout fonctionne correctement maintenant !
    Et j'en ai en plus appris plus sur le fonctionnement du .htaccess.
    Jamais je ne me serais douté qu'il pouvait y avoir une boucle inifine et je ne pense pas que j'aurais trouvé comment régler le problème.

    Merci pour ton aide et pour le fait de m'avoir aiguillé/aidé de A jusqu'à Z.

    Cordialement, Squal.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •