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 :

[URL rewriting] Cacher un répertoire ou une arborescence


Sujet :

Apache

  1. #1
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut [URL rewriting] Cacher un répertoire ou une arborescence
    Salut,

    J'ai fait des recherches, mais en général je trouve comment simuler une arborescence depuis une page et ses paramètres.

    J'ai un une arborescence ressemblant à ça site.com/content/page-quelconque.html, je souhaiterais réécrire l'url de façon à obtenir site.com/page-quelconque.html.

    Pourriez-vous m'indiquer la marche à suivre?

    J'ai bien été voir sur le site d'apache, mais je n'ai pas trouvé mon bonheur. J'ai peur d'être obligé de faire une redirection, ce qui ne me réjouirait pas.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  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
    La question initiale est : comment reconnais-tu les pages pour lesquelles tu veux rajouter /content devant ? N'y a-t-il pas des pages ailleurs dans le site portant le même nom que les pages du répertoire content ?

    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
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Non, aucune. C'est un ensemble de pages html que je ne veux tout simplement pas mettre à la racine du site, ça ferait désordre.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  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
    OK. Mais est-ce qu'il existe ailleurs dans le site des fichiers avec le même nom que ceux présent dans ce répertoire ? En gros, peut-on envisager la règle suivante : "s'il existe dans /content un fichier portant le nom demandé, je l'affiche" ou pas ? Ca s'implémenterait ainsi (à tester) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine on
     
    RewriteCond %{DOCUMENT_ROOT}/content%{REQUEST_URI} -f
    RewriteRule ^(.*)$ /content/$1 [QSA,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

  5. #5
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    OK. Mais est-ce qu'il existe ailleurs dans le site des fichiers avec le même nom que ceux présent dans ce répertoire ?
    Non, les fichiers sont bel et bien uniques.

    Par contre, deux petites erreurs de ma part :
    - L'arborescence depuis le document root n'est pas la même qu'il sera sur la prod, petite confusion qui a son importance, je ne sais pas comment intégrer les répertoires dans les commandes.
    - Je souhaite supprimer l'extension du fichier.

    En gros, pour le moment j'ai serveur-de-test/g/5/content/une-page.html et je souhaite serveur-de-test/g/5/content/une-page.

    J'ai essayé plusieurs combinaisons en incluant la gestion de l'extension du fichier, mais je n'ai que des erreur 404. N'y a-t-il pas un outil servant à tester la réécriture d'url?
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  6. #6
    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
    L'outil pour tester s'appelle un environnement de test Je n'en connais pas d'autre.

    Citation Envoyé par franculo_caoulene Voir le message
    En gros, pour le moment j'ai serveur-de-test/g/5/content/une-page.html et je souhaite serveur-de-test/g/5/content/une-page.
    Dans ce cas, on peut essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^(.*)$ $1.html [QSA,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

  7. #7
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Je suis vraiment un bon à rien!!!!

    Je corrige encore ma demande... J'ai ceci serveur-de-test/g/5/content/une-page.html et je souhaite ceci serveur-de-test/g/5/une-page, j'utilisais la règle que tu proposes pour ce que je demandais, par erreur, dans le message précédent. Or je souhaite bel et bien supprimer l'extension du fichier ET le répertoire "contenu".

    Désolé...
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  8. #8
    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
    OK. C'est plutôt "touchy" à faire. La solution que je vois c'est passer par des variables d'environnement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RewriteEngine on
     
    RewriteCond %{REQUEST_URI} !/content/
    RewriteRule ^(.*)/([^/]+)$ - [E=CONTENT_URL:/$1/content/$2.html]
    RewriteCond %{DOCUMENT_ROOT}%{ENV:CONTENT_URL} -f
    RewriteRule .* %{ENV:CONTENT_URL} [L]
    Ca a l'air de plutôt bien marcher.

    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

  9. #9
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    J'ai encore et toujours une erreur 404!

    Une fois écrite, on comprend assez aisément le sens des instructions. Et ça me semble correct.
    1. Si l'URI demandée ne contient pas /content/ on réécrit l'URL.
    2. On intègre le répertoire et l'extension de fichier dans l'URI demandée via les deux groupes extraits de l'expression rationnelle.
    3. Si le fichier existe.
    4. On remplace l'URI par celle affectée à la variable d'environnement.
    Ça ne fonctionne pas dans deux environnements différents... Je ne sais pas quoi penser. L'expression rationnelle est correcte, je suppose que le document root aussi. Puis-je avoir des problème à créer une variable d'environnement? Apache, n'est pas trop de mon domaine.
    Doit-on place le fichier .htaccess à un endroit précis?

    [edit] Ça fonctionne sur un de mes deux environnements, c'est dû à la position du fichier. Par contre, dans l'autre environnement (hébergeur) je ne vois pas comment le faire fonctionne. M'enfin, ça me soulage, le site de production sera sur un serveur dédié.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  10. #10
    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
    C'est exactement ça. J'ai testé en local sur mon WIndows avec Wamp 2.

    Essaie d'ajouter
    en haut du .htaccess

    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

  11. #11
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Bon ça fonctionne pas sur l'hébergeur, mais c'est pas grave. Je considère ça comme résolu.

    Merci beaucoup _Mac_.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  12. #12
    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
    Ce n'est pas exclu que ce soit %{DOCUMENT_ROOT} qui n'est pas bon. Je ne sais pas par quoi remplacer cette variable : toute la difficulté est de calculer la nouvelle URL et le chemin disque correspondant Une variante qui n'utilise pas cette variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Options +FollowSymLinks -MultiViews
     
    RewriteEngine on
     
    RewriteCond %{REQUEST_URI} !/content/
    RewriteCond %{REQUEST_FILENAME} ^(.*)/([^/]+)$
    RewriteRule .* - [E=CONTENT_PATH:%1/content/%2.html]
    RewriteCond %{ENV:CONTENT_PATH} -f
    RewriteRule ^(.*)/([^/]+)$ /$1/content/$2.html [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

  13. #13
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Ça fonctionne toujours sur xampp, mais pas chez l'hébergeur.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  14. #14
    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
    Très étrange. Même version d'Apache ? Essaie peut-être avec SCRIPT_FILENAME à la place de REQUEST_FILENAME.

    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

  15. #15
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Pas de changement. Xampp utilise Apache 2.2, l'hébergeur (Dreamhost) Apache 2.0.63. Rien de flagrant je pense.

    Mais comme je t'ai dit, je ne m'en fais pas pour la prod. C'est juste ennuyeux pour tester.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

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

Discussions similaires

  1. [URL rewriting] Vérifier la présence d'une variable d'URL
    Par MatthieuFourcade dans le forum Apache
    Réponses: 2
    Dernier message: 15/02/2010, 17h32
  2. Réponses: 9
    Dernier message: 07/08/2009, 09h53
  3. URL Rewriting un peu bizarre sur une app en modules
    Par leomac dans le forum Zend Framework
    Réponses: 2
    Dernier message: 20/10/2008, 09h14
  4. Réponses: 7
    Dernier message: 20/12/2007, 11h52
  5. [URL Rewriting] Cacher un paramètre ?
    Par Prosis dans le forum Apache
    Réponses: 3
    Dernier message: 15/12/2007, 19h21

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