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 :

[Réécriture d'URL] ma_page/ = ma_page.php/


Sujet :

Apache

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 136
    Points
    136
    Par défaut [Réécriture d'URL] ma_page/ = ma_page.php/
    Bonjour ,

    J'ai un petit soucis au niveau des réécritures d'url.

    Pour commencer, voici ma config :
    - Apache: Apache/2.0.59 (Win32)
    - PHP: 5.2.0
    - MySQL: 5.0.27-community-nt

    Voulant tester les réécritures d'url je me suis dit que j'allais le tester sur une page qui demande des droits sur la gestion des utilisateurs (page : user.php)

    J'ai testé différente chose et tout marche bien sauf une seul.
    Je voulais transformer www.mon_site.com/user/admin en www.mon_site.com/user.php?op=admin

    Mais après différent test, je me suis aperçu que lorsque l'adresse www.mon_site.com/user/ la variable $_SERVER['PHP_SELF'] me renvoyer www.mon_site.com/user.php/
    Forcement la réécriture d'url n'est plus correcte dans ce cas.

    Mais je voulais savoir si il s'agissait d'un comportement normal ou si il a avait une solution ?

    Je précise que www.mon_site.com/user2/ vers www.mon_site.com/user.php?op=admin fonctionne sans problème, cela vient uniquement quand on tape www.mon_site.com/une_page/ et que une_page.php existe.

    En vous remerciant tous par avance

  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
    J'ai pas la réponse mais ça m'intéresse de savoir comment on fait effectivement pour pouvoir omettre l'extension .php des scripts.

  3. #3
    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
    Ce qui peut se passer c'est qu'Apache résolve user en user.php avant d'exécuter tes règles de réécriture. Alors de 2 choses l'une :
    - Soit tu essaies tes règles en mettant RewriteRule ^/user.php...
    - Soit tu essaies de faire en sorte qu'Apache ne transforme pas user en user.php. Ca veut que tous tes scripts PHP devront être appelés explicitement avec l'extension .php (/tutu/toto/titi.php et plus /tutu/toto/titi).

    Pour le second point et mon interrogation, en cherchant sur le moteur de recherche Web leader du marché, j'ai trouvé cette page qui dit dans les commentaires qu'en mettant DefaultType application/x-httpd-php, tous les "fichiers" sans extensions sont interprétés comme étant des fichiers php. Tu peux également trouver des configs avec ForceType appliqué à un répertoire ou même un fichier. Donc regarde si ça te concerne.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 136
    Points
    136
    Par défaut
    Merci pour ta réponse ,

    J'ai essayé les différentes manipulation de type : ForceType, DefaultType, ..., mais rien n'a fonctionné

    En regardant d'encore plus prêt j'ai remarqué la directive : AcceptPathInfo.

    Mon problème se résout en mettant :
    AcceptPathInfo Off

    Mais si aucune règle de réécriture d'url n'est définie il marque que l'url n'existe pas mais avec l'extension .php
    (The requested URL /root/user.php/ was not found on this server.)
    Mais avec réécriture d'url tout fonctionne bien.

    Par contre ceci ne fonctionne qu’à partir d'Apache 2.0.30.

    Remarque : Pour éviter de désactiver des informations qui pourraient être importante je l’utilise comme ceci :

    <Files user.php>
    AcceptPathInfo Off
    </Files>

    Il n'y a plus qu’à vérifier comment se comporte ce problème sur mon hébergeur.

    Question au passage , comment connaître la version d'Apache utilisé sur un serveur mutualisé ?

    Encore merci pour le lien

    Edit : chez mon hebergeur j'ai une erreur 500 quand je rajoute la directive , me reste plus qu'a réécrire mes url, ca sera plus simple

  5. #5
    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
    Connaissais pas ce truc.

    Pour connaître la version d'Apache, essaie de voir avec un phpinfo() : si ça ce trouve, ça donnera la version d'Apache. Sinon, la version apparaît souvent dans l'entête HTTP Server : fais une requête HTTP sur ton site et essaie de récupérer l'entête Server. Pour cela, utilise un sniffer, l'extensions LiveHTTPHeaders sur Firefox ou même fais un telnet sur ton site (telnet www.monsite.com 80) et tape ce qui suit ([CR] = saut de ligne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GET / HTTP/1.0[CR]
    Host: www.monsite.com[CR]
    [CR]
    Généralement, quand je fais ça, je prépare la requête dans Notepad, je la copie, je fais le telnet et je colle. C'est plus rapide et moins source d'erreur.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 136
    Points
    136
    Par défaut
    Ca marche pas avec le phpinfo .
    Par contre ton code fonctionne a merveille , merci pour la commande

    Apache Version 1.3.33, c'était beau de rêver a une version récente

    Pour :
    <Files user.php>
    AcceptPathInfo Off
    </Files>

    Ca permet seulement de ne pas afficher la page user/ en user.php/ (et evite donc les problemes de CSS au niveau des chemin), mais la page rester bien user.php/ pour la réécriture d'url

  7. #7
    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
    Fais gaffe : AcceptPathInfo est une directive Apache 2.x et pas Apache 1.3, donc si tu en as besoin, ta conf ne marchera chez ton hébergeur.

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 136
    Points
    136
    Par défaut
    J'avais pris soin de regarder justement
    Merci quand même

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

Discussions similaires

  1. Réécriture d'url (sans index.php)
    Par ciolvic dans le forum Zend Framework
    Réponses: 0
    Dernier message: 30/09/2013, 12h58
  2. [.htaccess] SetEnv, PHP et réécriture d'URL
    Par shaftJackson dans le forum Apache
    Réponses: 1
    Dernier message: 15/02/2013, 00h29
  3. Réécriture d'urls en php
    Par flo_k dans le forum Langage
    Réponses: 3
    Dernier message: 07/01/2010, 13h41
  4. [URL Rewriting] réécriture d'url pour inclusion php
    Par kriskafr dans le forum Apache
    Réponses: 3
    Dernier message: 25/02/2008, 12h37
  5. Réécriture d'url en asp.
    Par éelise dans le forum ASP
    Réponses: 4
    Dernier message: 13/12/2005, 09h53

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