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 :

rewriterule pour zapper un dossier


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut rewriterule pour zapper un dossier
    Salut,

    j'ai un site avec une archi du style :


    appli/
    -- model/
    -----model1.php
    -----model2.php
    -- module/
    -----module1/
    -------action1.php
    -------action2.php
    -------view/
    ---------action1.view.php
    ---------action2.view.php
    -----module2/
    -------action1.php
    -------action2.php
    -------view/
    ---------action1.view.php
    ---------action2.view.php
    public/
    -- index.php

    a la base ca marche donc comme ca :
    site.com/dir/public/index.php?module=module1&action=action1

    grace a quelques regles de rewriting dans un .htaccess a la racine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule public/(\w+)/(\w+)$					public/index.php?module=$1&action=$2 [L]
    si je vais sur :
    www.site.com/dir/public/module1/action1

    ca marche parfaitement

    cependant j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule dir/(\w+)/(\w+)$					public/index.php?module=$1&action=$2 [L]
    pour avoir :
    www.site.com/dir/module1/action1
    (pour zapper le /public/)
    Mais ca ne marche pas. Sauriez vous me dire comment je dois m'y prendre svp?

    ps: je suis sur un serveur mutualisé

  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
    "ça ne marche pas" veut dire quoi ? Erreur 404 ? Erreur 500 ?

    Ta règle qui ne marche pas, tu l'as mise dans un .htaccess qui se trouve dans quel répertoire ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut
    La regle je l'ai mise dans le meme .htaccess donc dans dir/

    en fait en physique j'ai :
    www/dir/

    et dans dir/ j'ai l'arbo que j'ai donné au dessus :

    appli/
    -- model/
    -----model1.php
    -----model2.php
    -- module/
    -----module1/
    -------action1.php
    -------action2.php
    -------view/
    ---------action1.view.php
    ---------action2.view.php
    -----module2/
    -------action1.php
    -------action2.php
    -------view/
    ---------action1.view.php
    ---------action2.view.php
    public/
    -- index.php


    Donc mon .htaccess est dans www/dir/.htaccess

    La regle "ne marche pas" car si je vais sur www.site.com/dir/module1/action1 j'ai une erreur 404 (not found).

    J'ai essayé en modifiant les regles comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    RewriteRule /(\w+)/(\w+)/(\d+)$ public/index.php?module=$1action=$2&id=$3 [L]
    RewriteRule /(\w+)/(\w+)/(\w+)$ public/index.php?module=$1&action=$2user=$3 [L]
    RewriteRule /(\w+)/(\w+)$	public/index.php?module=$1&action=$2 [L]
    RewriteRule /(\w+)$	public/index.php?module=pages&action=$1 [L]
    et si je tape
    www.site.com/dir/nimporteKelModule/action1

    il me renvoit sur ma page d'accueil home.php (par defaut si il ne trouve pas le module et l'action).

    ca signifie qu'il trouve bien ma page d'index.php à /dir/public/index.php.

    En modifiant home.php j'affiche $_GET[] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [module] => pages [action] => action1)
    Donc je ne sais pas pour quel raison il utilise la regle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule /(\w+)$	public/index.php?module=pages&action=$1 [L]
    Plutot que la regle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule /(\w+)/(\w+)$	public/index.php?module=$1&action=$2 [L]
    dont il ne tiens pas compte (meme si je ne met que cette règle là) .

    C'est comme si il lancait la regex uniquement sur le dernier element.

    et si j'essai de mettre comme regle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule dir/(\w+)/(\w+)$  public/index.php?module=$1&action=$2 [L]
    RewriteRule dir/(\w+)$	  public/index.php?module=pages&action=$1 [L]
    la j'ai une erreure 404..


    Il faudrait que je puisse réglé le debut de du motif de recherche de la regex sur dir/, pour le moment ca commence sur dir/dir+1/

  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
    Le problème c'est simplement que si le .htaccess est dans le répertoire dir, tu n'as besoin de mettre dir dans le pattern des RewriteRule. Essaie simplement avec ceci, ça devrait aller mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule (\w+)/(\w+)$  public/index.php?module=$1&action=$2 [L]
    RewriteRule (\w+)$	  public/index.php?module=pages&action=$1 [L]

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut
    Helas non j'ai deja essayé ca et ca ne marche pas mieux.
    Si je fais ca il m'affiche encore une fois la page home.php et $_GET donne :
    Array ( [module] => pages [action] => php )

    pour une requete :
    www.site.com/dir/module1/action1
    donc encore une fois il utilise la meme regle et la il me sort php comme action de je sais pas ou...

    les regles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule (\w+)/(\w+)$				public/index.php?module=$1&action=$2 [L]
    RewriteRule (\w+)$						public/index.php?module=pages&action=$1 [L]

  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
    Par défaut
    Il sort le php de la réécriture du résultat de la première règle : si tu passes public/index.php?module=module1&action=action1 à la moulinette de tes deux règles, ça matche sur la deuxième règle car ton pattern précise seulement "request uri qui se termine par un mot" : php étant le dernier mot de public/index.php, ça passe et crack, php.

    En rajoutant un ^ devant tes patterns, ça devrait aller mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule ^(\w+)/(\w+)$				public/index.php?module=$1&action=$2 [L]
    RewriteRule ^(\w+)$						public/index.php?module=pages&action=$1 [L]

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

Discussions similaires

  1. Code pour verouiller un dossier sous Windows XP
    Par PHIL45 dans le forum Delphi
    Réponses: 2
    Dernier message: 26/12/2006, 13h01
  2. Probleme pour renommer un dossier
    Par blondelle dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/09/2006, 23h07
  3. Script pour créer un dossier
    Par trihanhcie dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 23/08/2006, 17h14
  4. Probleme pour lister un dossier
    Par quentingsc dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 13/08/2006, 09h36
  5. Réponses: 2
    Dernier message: 20/01/2006, 17h08

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