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 :

REQUEST_FILENAME est faux dans htaccess


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Devether
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 66
    Par défaut REQUEST_FILENAME est faux dans htaccess
    Bonjour,

    Je voudrais rediriger les URL de type http://localhost/monsite/XXX/ vers http://localhost/monsite/index.php?url=XXX

    J'ai trouvé plusieurs exemples qui proposent d'utiliser une condition sur REQUEST_FILENAME mais apparemment ça ne fonctionne pas.

    Je m'explique.

    Voici mon arborescence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /monsite
      /modules
      /public
    	/css
    	/images
    	/js
    	index.php
    	.htaccess
      /templates
      /tmp
    /monsite se trouve ici D:\Mes Documents\Mes Projets\PHP\monsite

    J'utilise WampServer 2.0

    Je créer donc un alias vers D:\Mes Documents\Mes Projets\PHP\monsite\public\ avec l'utilitaire de wamp.

    Il me créer ce fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Alias /monsite/ "D:/Mes Documents/Mes Projets/PHP/monsite/public/" 
     
    <Directory "D:/Mes Documents/Mes Projets/PHP/monsite/public/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        Allow from all
    </Directory>
    J'accède donc a mon site via http://localhost/monsite/index.php

    J'active rewrite_module dans wamp et je créer un fichier .htaccess avec le contenu suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ /monsite/index.php?url=$1 [QSA,L]
    </IfModule>
    Si j'appelle l'url http://localhost/monsite/ tout se passe bien.

    Pour l'url http://localhost/monsite/XXX/ ça m'affiche la bonne page mais aucun templates, scripts js ou css ne sont utilisés (idem pour http://localhost/monsite/XXX/YYY/ZZZ/) .

    J'ai donc vérifié ce que contenait REQUEST_FILENAME comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ /monsite/index.php?url=$1&f=%{REQUEST_FILENAME} [QSA,L]
    ce qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Array
    (
        [url] => XXX/
        [f] => D:/Mes Documents/Mes Projets/PHP/monsite/public/XXX
    )
    De plus même si je demande http://localhost/monsite/XXX/YYY/ZZZ/, REQUEST_FILENAME sera toujours égale à D:/Mes Documents/Mes Projets/PHP/monsite/public/XXX

    En gros quand ma page demande le fichier css/style.css apache vérifie dans D:/Mes Documents/Mes Projets/PHP/monsite/public/XXX/css/style.css. Ce qui fait que les conditions seront forcement vraies et qu'il redirigera toutes les urls des fichiers et qu'il ne les trouvera pas.

    Si quelqu'un peut m'aider à comprendre et régler mon problème, je suis preneur.

  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
    Citation Envoyé par Devether Voir le message
    En gros quand ma page demande le fichier css/style.css apache vérifie dans D:/Mes Documents/Mes Projets/PHP/monsite/public/XXX/css/style.css. Ce qui fait que les conditions seront forcement vraies et qu'il redirigera toutes les urls des fichiers et qu'il ne les trouvera pas.
    C'est parfaitement logique tout ça. Le navigateur demandes une URL http://localhost/monsite/XXX/ qui renvoie du code HTML. Dans ce cas, tu as un truc du style <link rel="stylesheet" type="text/css" href="css/style.css" />. Que fait le navigateur ? Vu que la page parente est /monsite/XXX/, le navigateur va demander /monsite/XXX/css/style.css ! Donc le problème n'est pas Apache mais ton code HTML : il faut utiliser des URL relatives à la racine du serveur et pas des URL relatives à la page : href="/monsite/css/style.css" à la page de href="css/style.css".

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/10/2014, 07h40
  2. quel est le terme "FAUX" dans VB
    Par m93.fred dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/12/2007, 17h58
  3. [C#] Connaitre la colonne qui est cliquée dans un ListView
    Par omlip dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/12/2004, 20h01
  4. [Reflection] Executer une fonction dont le nom est contenu dans un String
    Par christobal dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 05/07/2004, 15h23
  5. Ne pas afficher un champs qui est vide dans ma BD
    Par yoda_style dans le forum ASP
    Réponses: 3
    Dernier message: 27/04/2004, 11h40

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