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] Masquer un répertoire dans l'URL


Sujet :

Apache

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1
    Par défaut [URL rewriting] Masquer un répertoire dans l'URL
    Bonjour à tous,

    Voilà où j'en suis.
    Les règles à appliquer sont les suivantes :
    1- j'ai un répertoire 'content' dans lequel se trouvent tous les fichiers php de bases (qui peuvent s'appuyer sur d'autres php sauvegardés dans un répertoire 'noaccess' qui doit être protégé afin de ne pas être vu et visitable par les interanutes mal intentionnés) - Ex: www.monsite.com/content/
    2- chacun de mes clients à son URL perso se situant en www.monsite.com/content/clients/clientXXX, www.monsite.com/content/clients/clientYYY, etc... Ils doivent pouvoir l'atteindre en tapant www.monsite.com/clientXXX, etc...

    J'ai réussi à faire ces 2 étapes avec les 2 fichiers .htaccess suivants:
    1- dans le fichier www.monsite.com/.htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Options +FollowSymlinks
    RewriteEngine on
    RewriteOptions MaxRedirects=10
    # checks for incoming URLs that have no string (ie. <a href="http://www.monsite.com/clientXXX/" target="_blank">http://www.monsite.com/clientXXX/</a>)
    RewriteRule ^$ <a href="http://www.monsite.com/content/index.php" target="_blank">http://www.monsite.com/content/index.php</a> [R=301,L]
    # redirects any URL with any string to the 'content/clients/' directory and passes the string in as a variable
    RewriteRule ^/?([-a-zA-Z0-9/_]+)$ http://www.monsite.com/content/clients/$1 [L]
    ErrorDocument 401 <a href="http://www.monsite.com/content/error_401.php" target="_blank">http://www.monsite.com/content/error_401.php</a>
    ErrorDocument 403 <a href="http://www.monsite.com/content/error_403.php" target="_blank">http://www.monsite.com/content/error_403.php</a>
    ErrorDocument 404 <a href="http://www.monsite.com/content/error_404.php" target="_blank">http://www.monsite.com/content/error_404.php</a>
    2- dans le fichier www.monsite.com/content/.htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Options +FollowSymlinks
    RewriteEngine off
    Alors première question car ça fonctionne mais est-ce "propre" ?
    Ou est-ce améliorable ?

    Et surtout voici ma deuxième question qui revient sur le sujet précédemment évoqué sur cette page du forum: je souhaiterais que le répertoire /content/ soit invisible dans l'URL donc :
    - soit l'utilisateur voit www.monsite.com/index.php alors qu'il est réellement sur www.monsite.com/content/index.php
    - soit il voit www.monsite.com/client.php?id=XXX alors qu'il est arrivé sur http://www.monsite.com/content/clien...tXXX/index.php en tapant www.monsite.com/clientXXX puis redirigé vers www.monsite.com/content/client.php?id=XXX visible en www.monsite.com/client.php?id=XXX

    Voilà j'espère avoir été suffisament clair dans mes propos.
    Mais malheureusement les quelques suggestions précédentes évoquées dans cette page ne change en rien le comportoment de mon site qui affiche toujours le répertoire /content/.

    Merci d'avance pour toutes personnes ayant de vraies compétences en la matière (malheureusement pas mon cas)

  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
    Par défaut
    C'est pas terriblement propre mais si ça marche, pourquoi pas. Après, je ne vois pas l'intérêt de faire ça si ce n'est finalement pas le besoin Donc vire ton .htaccess dans le répertoire /content.

    Pour maquer /content/, je plus simple c'est d'écrire la règle comme on a envie de l'écrire : "si l'URL ne commence pas par /content, l'ajouter". Ca se traduit directement ainsi dans le .htaccess à la racine du site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} !^/content
    RewriteRule (.*) /content/$1 [L]
    Après, pour reconstruire l'URL avec les paramètres, c'est idem, faut pas chercher bien compliqué. La règle est : "passer ce qui suit /content/clients/ en paramètre d'URL", ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^content/clients/(.*)(/index\.php)?$ /content/client.php?client=$1 [L]
    Enfin, on garde le premier RewriteRule qui fait bien son boulot mais on le modifie légèrement pour virer le /content qu'on ne veut plus.

    Au final, ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Options +FollowSymlinks
    RewriteEngine on
    RewriteOptions MaxRedirects=10
    # checks for incoming URLs that have no string (ie. http://www.monsite.com/clientXXX/)
    RewriteRule ^$ http://www.monsite.com/index.php [R=301,L]
     
    RewriteCond %{REQUEST_URI} !^/content
    RewriteRule (.*) /content/$1 [L]
     
    RewriteRule ^content/clients/(.*)(/index\.php)?$ /content/client.php?client=$1 [L]
     
    ErrorDocument 401 http://www.monsite.com/content/error_401.php
    ErrorDocument 403 http://www.monsite.com/content/error_403.php
    ErrorDocument 404 http://www.monsite.com/content/error_404.php

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/08/2010, 07h52
  2. [URL rewriting] Masquer l'ID dans l'URL
    Par shynx dans le forum Apache
    Réponses: 6
    Dernier message: 06/10/2009, 22h12
  3. [URL Rewriting] CSS non appliquée dans l'url réécrite
    Par guigui5931 dans le forum Apache
    Réponses: 2
    Dernier message: 06/12/2007, 15h07
  4. [URL Rewriting] Sans slash final dans l'URL
    Par yanice dans le forum Apache
    Réponses: 2
    Dernier message: 26/10/2007, 19h23
  5. Réponses: 6
    Dernier message: 19/12/2005, 13h41

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