IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

.htaccess et sous-répertoire


Sujet :

Apache

  1. #1
    Invité
    Invité(e)
    Par défaut .htaccess et sous-répertoire
    Voici mon fichier ".htaccess" présent dans "http://monsite/fr"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DirectoryIndex index.php
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !\.php$
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) http://monsite/$1 [L]
    Ca fonctionne presque correctement.
    - si je vais sur "http://monsite/fr" ça m'affiche bien la page "index.php"
    - les fichiers css et les images définie dans ces fichiers sont bien gérés.

    Par contre suivant les pages, les images et fichiers js fonctionnent ou non ...
    Ils sont pourtant tous dans des sous-répertoire (ex: http://monsite/emote/)

    Normalement ça devrait marcher pour tous ou aucun?
    Bon vu le peu de règles que j'utilise, je ne pensais pas que ça marcherais pour certain de suite ...
    Il peut y avoir 1 ou plusieurs répertoires (le max doit être 3) donc ça complique un peu plus la tâche ...

    De plus j'aurais un répertoire à exclure des redirections si c'était possible.

    1) Pourriez-vous me dire si je n'ai pas fais de grosses erreurs dans le ".htaccess" ? Je pense que oui vu que le fonctionnement n'est pas très logique actuellement ...
    2) Quelque chose comme "RewriteRule /old/(.*) /new/$1" suffirait-il pour gérer les répertoires? Donc à avoir pour 1, 2 et 3 sous-répertoire?
    3) "RewriteCond %{REQUEST_URI} !/a_garder/(.*)$" suffirait-il pour exclure les redirections d'un répertoire en particulier?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Quel est le code HTML utilisé pour intégrer une image qui ne s'affiche pas ?

    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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ta question m'a fait penser à vérifier les ".htaccess" présents dans les répertoires pour lesquels les images s'affichent et ceux ne s'affichant pas. C'est bien les mêmes.

    J'ai aussi pensé à des caractères pouvant poser problème comme l'espace ou le tiret. Mais j'ai bien des exemples qui marchent avec ...

    Voici quelques exemples (bon c'est le code php et non le html, mais seuls les noms affichés changent au final et non le lien de l'image):

    Fonctionnent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <td style="width: 250px;"><a href="armor-npc.php"><img style="border: 0px solid;" src="./image/armor-npc.jpg" alt="NPC/Gold armor" /></a>
     
    <td style="width: 250px;"><a href="./cash%20shop/fashion/femme/t133.jpg" rel="lightbox[133]" title="<?php echo "$elements84_38200"; ?>"><span style='color:#ffffff'><?php echo "$elements84_38200"; ?></span> <img style="border: 0px solid;" src="./image/zoom.png" alt="screenshot" /></a></td>
     
    <td style="width: 185px;"><a href="./head%20bolus/Pumpkin-h.jpg" rel="lightbox" title="<?php echo "$elements90_5571 - Male"; ?>"><img style="border: 0px solid;" src="./head%20bolus/mini/Pumpkin-h.jpg" alt="head" /></a></td>
    Ne fonctionnent pas (j'ai rajouté le "./" devant le 1er pour vérifier que ça ne changeait rien):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <td style="width: 550px;"><br />Normal<br />
    <img style="border: 0px solid;" src="./emote/nomal-1.gif " alt="emote" />
    <img style="border: 0px solid;" src="emote/nomal-2.gif " alt="emote" />
    </td>
     
    <td style="width: 150px;"><div style="width: 128px; height: 128px; overflow: hidden;"><img style="margin-left: -17024px; margin-top: 0px;" src="./skill/pw-fashion-f.jpg" alt="Fashion" /></div></td>
     
    <td style="font-weight:bold; background-image: url(./skill/selection-4.png); background-repeat: no-repeat; background-position: center center;" onmousedown="javascript:sage();" id="lvl-sage"><?php echo "$sage"; ?></td>

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    A priori le problème est classique de la réécriture d'URL, lorsqu'on a joute ou qu'on retire des "répertoires" dans les URL. C'est parce que les chemins vers les images et CSS sont relatifs à la page en cours (src="./..." par exemple). Pour corriger le problème, il faut indiquer une balise <base href="http://tonsite/"> dans la section <head> des pages ou bien mettre des chemins relatifs à la racine du site (src="/...") pour tes images et CSS.

    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

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    A priori le problème est classique de la réécriture d'URL, lorsqu'on a joute ou qu'on retire des "répertoires" dans les URL. C'est parce que les chemins vers les images et CSS sont relatifs à la page en cours (src="./..." par exemple). Pour corriger le problème, il faut indiquer une balise <base href="http://tonsite/"> dans la section <head> des pages ou bien mettre des chemins relatifs à la racine du site (src="/...") pour tes images et CSS.
    J'ai testé avec une des pages posant problème et ça fonctionne très bien maintenant (avec un sous-répertoire et aussi avec les sous-domaine). J'ai utilisé la méthode avec la balise "base". C'est bien plus simple de ne changer qu'une seule ligne.

    Merci pour tout

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je viens de voir que ça casse tout mes liens >_<
    Ils sont maintenant vers "http://monsite" au lieu de "http://monsite/fr" ou "http://fr.monsite/"

    Une idée qui m'éviterait de les changer manuellement ?
    D'un autre côté les liens sur surtout dans le menu (qui est dans un fichier php à part donc facile à modifier), donc s'il n'y a pas de solution simple à utiliser. Autant modifier les fichiers contenant ces liens

    [Edit]Plus problématique, les références vers les id ne fonctionnent plus comme le suivant car ça ne renvoi pas vers la page courante ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <p><a id="haut"></a></p>
    ...
    <a href="#haut">retour</a>
    La référence suivante semble corriger ce problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>#haut">
    Dernière modification par Invité ; 26/04/2013 à 22h43.

  7. #7
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par Beginner.j Voir le message
    Je viens de voir que ça casse tout mes liens >_<
    Ils sont maintenant vers "http://monsite" au lieu de "http://monsite/fr" ou "http://fr.monsite/"

    Une idée qui m'éviterait de les changer manuellement ?
    Ben il n'y a pas 36 solutions. A priori, il faudrait ne plus utiliser la base <base> mais corriger toutes les URL des images et CSS...

    Très étrange, ton histoire d'ancre interne #haut. Ca devrait fonctionner sans avoir à écrire l'URL absolue. Très très étrange... Si le site est public, je veux bien l'URL (envoyée par MP par exemple) pour voir de mes propres yeux ce href="#haut" qui ne marche pas.

    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
    Invité
    Invité(e)
    Par défaut
    Je préfère utiliser <base>, ça me fait moins de liens à modifier au final
    Je t'ai envoyé le lien par mp. Ton avis me permettra de savoir si c'est bien l'utilisation de <base> qui donne ce résultat.

    Je pense que je passerais définitivement le sujet en résolu après ton prochain post.

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Alors, en effet, c'est la balise <base> qui plante les ancres internes. Un contournement possible par JavaScript est décrit ici.

    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
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Alors, en effet, c'est la balise <base> qui plante les ancres internes. Un contournement possible par JavaScript est décrit ici.
    Merci, mais j'ai fait comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo "<a href=\"http://fr.monsite/".basename($_SERVER['REQUEST_URI'])."#ancre\">Nom du lien</a>"; ?>
    Et je vais sans doute passer par une variable php qui stockera le nom du site

    Ca me permet de renvoyer tout mes liens vers "http://fr.monsite/" (même si on était sur "http://monsite/fr").
    Bon il y a juste une ancre qui bug mais sans vraiment poser problème: celle de la page d'index quand on accède au site via "http://monsite/fr". Ca renvoi vers "http://monsite/fr#haut"

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/10/2009, 11h29
  2. Réponses: 3
    Dernier message: 03/10/2009, 23h51
  3. Réponses: 7
    Dernier message: 24/03/2009, 17h33
  4. htaccess déprotection sous-répertoire
    Par gentony dans le forum Apache
    Réponses: 2
    Dernier message: 27/08/2008, 17h59
  5. Réponses: 1
    Dernier message: 31/10/2006, 13h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo