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] Passer le nom d'un sous-dossier en query string


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Par défaut [URL Rewriting] Passer le nom d'un sous-dossier en query string
    Bonjour tout le monde !

    Je travaille sur un site qui nécessite un htaccess.

    En effet je voudrais que quand un visiteur entre une url comme www.monsite.com/Tops la page qui affiche soit www.monsite.com/index.php?menu=Tops.

    Avec ses informations j'ai écris ce htaccess.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
    RewriteRule http://localhost/vel/ http://localhost/vel/index.php  [L]
    RewriteRule http://localhost/vel/(.*) http://localhost/vel/index.php?menu=$1  [L]
    Malheureusement celui ci ne marche pas car si j'entre l'url comme celle ci : www.monsite.com/Tops, mon navigateur me renvoie une erreur 404.

    J'ai besoin de votre aide. Merci d'avance.
    A bientot, Greg.

  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
    Bonjour,

    Dans tous les cas, dans un RewriteRule, on parle des URL relatives, pas absolues, donc tes http://localhost/ n'ont rien à faire là.

    J'ai des doutes sur l'utilité de la première règle, sauf si tu veux vraiment faire une redirection explicite du client sur index.php : si la directive DirectoryIndex est correctement configurée, mettre / doit logiquement appeler index.php. Si ce n'est pas le cas, tu devrais pour la mettre dans ton .htaccess.

    Ensuite, vu ta configuration, ça me paraîtrait logique que ça boucle sur index.php. Il faudrait donc ajouter une condition d'exclusion sur index.php. D'où finalement (a suppose que tu veux que / pointe su /index.php mais sans redirection du navigateur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DirectoryIndex index.php index.html
     
    RewriteEngine on
    # On exclut les index.php de la reecriture pour eviter de boucler
    RewriteCond %{REQUEST_URI} !index.php$
    RewriteRule ^vel/(.+)$ vel/index.php?menu=$1 [L]

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Par défaut
    Salut _Mac_ et merci de ta réponse complète et rapide.

    J'ai fait un copier coller de ton code mais cela ne marche pas mieux :s

    Je viens de faire un test : j'ai créer un dossier Tops avec un fichier (fichier.php) dedans. Quand je vais à l'url http://localhost/vel/Tops cela m'affiche l'arborescence du dossier. Le htaccess ne marche pas ?

    Merci des futures réponses.

  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
    Par défaut
    Comprends pas : pourquoi tu crées un répertoire Tops si tu veux que l'URL http://localhost/vel/Tops corresponde en fait à http://localhost/vel/index.php?menu=Tops ?

    En fait, j'ai jamais dit que j'avais testé et que ma configuration marchait Ceci dit, j'ai quand même testé sur Wamp (Apache 2.2) : j'ai ceci dans mon .htaccess placé à la racine de mon site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !index.php$
    RewriteRule ^vel/(.+)$ vel/index.php?menu=$1 [L]
    Tu noteras que, modulo le DirectoryIndex, c'est exactement ce que je t'ai donné.
    J'ai un répertoire vel dans lequel j'ai juste un fichier index.php qui contient un simple <?php phpinfo(); ?>.
    Et avec cette configuration, ça marche nickel :

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Par défaut
    Re et encore merci de ta réponse !

    Cette fois ci ça marche nickel !
    Le problème venait en fait du moment ou j'ai déplacé le htaccess dans le dossier racine du site, windobe m'a fait une copie du htaccess ...
    Bref j'ai supprimé celui qui été dans le dossier vel et tout marche.

    Encore une fois merci _mac_ (gyver )
    Aurevoir

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/02/2010, 16h55
  2. Réponses: 1
    Dernier message: 21/01/2008, 21h22
  3. Réponses: 3
    Dernier message: 27/11/2007, 15h03
  4. url rewriting : modifier le nom du répertoire
    Par hugo123 dans le forum Apache
    Réponses: 3
    Dernier message: 05/09/2006, 11h48
  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