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] Condition avec existence de fichier


Sujet :

Apache

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut [URL rewriting] Condition avec existence de fichier
    Bonjour,

    Alors voilà, je suis un train de créer un projet qui utilise l'UrlRewriting pour enjoliver le MVC, et j'ai quelques problèmes au niveau du htaccess.

    Voici en gros l'architcture du site

    • .htaccess
    • web/
      • style.css
      • favicon.png
      • site.js

    • sys/
      • modules/
        • test.mod.php

      • parse.php
      • model/
        • fullvisite.class.php

    • vue/




    En bref, je voudrais que /test devienne /sys/parse.php?mod=test seulement si sys/modules/test.mod.php existe.

    Le cas échant, on va chercher dans le dossier web si le fichier "test" existe.
    Enfin, si c'est pas le cas, on renvoit une erreur 404.

    Voilà le code de mon .htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    RewriteEngine On
     
    # RewriteBase "/site/" - J'ai essayé avec ou sans, aucun changement
     
    # Empêche la réécriture en boucle
    RewriteCond %{ENV:REDIRECT_STATUS} 200
    RewriteRule .* - [L]
     
    # Cette condition n'est pas valide... et je sais pas pourquoi :s
    RewriteCond sys/modules/%{REQUEST_FILENAME}.mod.php -f
    RewriteRule ^(.*)$ sys/parse.php?mod=$1 [L]
     
    RewriteRule ^(.*)$ web/$1 [L]
    Si je tape xxx.com/style.css, j'ai bien la feuille de style.

    Par contre, si je tape xxx.com/test, j'ai une erreur 404.

    Je trouve pas mon erreur. Si j'enlève la condition tout marche très bien. Si quelqu'un sait pourquoi :o .

    J'ai bien vérifier, c'est pas l'OS ou Wamp qui fait ça

  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
    %{REQUEST_FILENAME} correspond au chemin physique du fichier sur le système, genre /var/www/toto/titi.php, donc pas ce que tu veux. Utilise plutôt %{REQUEST_URI} qui vaudra directement /test, mais je ne suis pas sûr que ça marche pour autant

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    En effet... ça ne marche toujours pas :/

    J'ai tout essayé , SCRIPT_FILENAME, QUERY_STRING, REQUEST_FILENAME, REQUEST_URI... Je peux upload un zip plus tard si vous voulez pour que les gens fassent des tests .

    À tout à l'heure

  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
    On peut tenter une autre configuration mais pareil, je ne sais pas si elle marche, je ne peux pas tester. C'est un ensemble de 2 règles : un premier jeu de règles qui écrit le chemin complet du fichier s'il ne correspond à rien d'existant et un second jeu de règles qui vérifie si ce chemin complet existe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) sys/modules/$1.mod.php
     
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule /([^/]*)\.mod\.php$ sys/parse.php?mod=$1 [L]

Discussions similaires

  1. [URL rewriting] Condition avec paramètre
    Par math567 dans le forum Apache
    Réponses: 6
    Dernier message: 21/05/2012, 17h18
  2. [URL Rewriting] Tester l'existence d'un fichier
    Par kileak dans le forum Apache
    Réponses: 2
    Dernier message: 07/05/2011, 20h19
  3. [URL REWRITING] Incohérence avec le fichier index ?
    Par dorian53 dans le forum Apache
    Réponses: 15
    Dernier message: 28/01/2009, 18h28
  4. Réponses: 3
    Dernier message: 31/07/2007, 16h40
  5. Condition sur existence de fichier sur le disque dur
    Par manshoon dans le forum Langage
    Réponses: 3
    Dernier message: 10/05/2006, 09h58

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