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] Fonctionne sur easyPHP mais pas sur mon hébergeur public


Sujet :

Apache

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut [URL rewriting] Fonctionne sur easyPHP mais pas sur mon hébergeur public
    Bonjour,

    J'espère être au bon endroit pour se genre de problème.
    Je ne suis actuellement pas certain de la cause de mon problème ...

    J'ai créé un site en utilisant le concept MVC et j'utilise mon URL pour trouver la page à afficher.

    mon URL est donc sous la forme :
    www.monsite.com/page-x/souspage-y/

    mon .htaccess contient cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Options -Indexes +FollowSymlinks -MultiViews 
    RewriteEngine on
    RewriteBase /
    RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ init.php
    Tout marche très bien avec easyPHP, mais quand j'ai voulu déployer mon site sur mon hébergeur ce matin cela ne marche qu'à 50%.

    Sur mon hébergeur le problème est le suivant:
    * Si j'entre l'URL:
    www.monsite.com/page-x
    \=> la page-x s'affiche sans problème.

    * Si j'entre l'URL:
    www.monsite.com/page-x/souspage-y/
    \=> sur easyPHP la page fille y de la page x saffiche sans problème.
    \=> sur mon hébergeur j'ai l'erreur : "No input file specified."

    J'ai vérifié la configuration php (5.3.x) dans les 2 cas.
    Aucun changement majeur trouvé via phpinfo.
    hébergeur 1and1 si cela à une importance ...

    Toutes idée sera la bien venu!
    Merci d'avance pour vos réponses.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    As-tu utilisé un framework spécifique pour déveloper ton portail?

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut
    J'ai utilisé un code fait maison.
    Je ne l'ai pas entièrement codé puisque je suis parti du code d'un ami,
    mais j'ai accès au code.

  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
    Il n'y a que ces 4 lignes-là dans ton .htaccess ? Si non, peux-tu donner le contenu complet du .htaccess ? A quoi doit correspondre page-x/souspage-y/ ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut
    merci pour ta réponse Mac. (Merci à toi aussi Mygale1978 )

    Oui en effet, je n'ai que ses 4 lignes dans mon .htaccess
    Sur easyPHP ça me permettait de tout rediriger sur mon fichier init.php.

    Dans mon init.php, je découpe l'URL pour récupérer les variables page-x et souspage-y. Par exemple:

    www.monsite.com/page-1/souspage-4

    Mon init.php récupére l'information suivante (pour faire simple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $page = "page-1";
    $souspage = "souspage-4";
    Grâce à ça je peux afficher la page fille N°4 de la page mère n°1.
    afficher(page 1-4)

    Dans ma variable de donnée j'ai un tableau avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'pages-1' => array( 
        'souspage-1'=>'content souspage-1, 
        'souspage-2'=>'content souspage-2, 
        'souspage-3'=>'content souspage-3, 
        'souspage-4'=>'content souspage-4,)
    'page-2' => array (
        ....
    Edit:

    J'ai trouvé les log de mon hébergeur. J'ai la ligne suivante chez eux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GET  page-1/souspage-4/init.php - 80 - 109.7.2.7 HTTP/1.1 Mozilla/5.0+(Windows+NT+6.1;+rv:6.0.2)+Gecko/20100101+Firefox/6.0.2 - http://www.monsite.com/page-1 www.monsite.com 404 0 0 208 409 265
    Alors que sur easyPHP pour la même page j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "GET page-1/souspage-4 HTTP/1.1" 200 5689

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Si tu commentes la ligne RewriteBase, ça donne quoi ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut
    Même résultat malheureusement.

    J'ai vérifié les valeurs contenu dans $_SERVER aussi mais je n'ai rien trouvé d'anormal.

    Edit:

    Voila par contre du nouveau. J'ai tenté d'ajouter à la racine de mon site les dossiers et fichiers suivants:

    page-1/
    page-1/init.php
    page-1/souspage1/
    page-1/souspage1/init.php
    page-1/souspage2/
    page-1/souspage2/init.php
    Dans mes fichiers init.php j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h1>page-X/souspage-X</h1>
    * Si je vais sur mon site : www.monsite.com
    * J'ouvre ensuite la page: www.monsite.com/page-1
    Cette page marche (comme avant).

    * Maintenant, je clic sur le lien de la sous page 2: www.monsite.com/page-1/souspage2
    Je peux lire: "page-1/souspage-2"

    * Si je reviens sur ma page (page-1) avec le bouton précédent je peux alors lire "page-1" à la place de la page correct qui c'était affiché plus haut.

    *Si je clic sur page-1/souspage-6, sous page pour laquelle je n'ai pas de dossier et fichier init.php placé comme pour les pages ('page-1/souspage1' et 'page-1/souspage2') je peux alors maintenant lire:
    "page-1" et non "No input file specified.".


    je n'ai donc plus le message "No input file specified.".
    Mais je ne peux pas m'expliquer ce comportement et je ne vois pas encore de solution à celui - ci.


    Edit 2:

    Sur easyPHP, retirer la ligne "RewriteBase /" du fichier .htaccess ne change rien non plus.

    Rajouter les fichiers init.php et les dossiers donnés plus haut ne génère aucun bug. Le site fonctionne comme avant.

  8. #8
    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
    Citation Envoyé par rteuteu55 Voir le message
    "No input file specified."
    C'est un message qui vient d'où ? De ton code PHP ? Le serveur Apache répond avec quel code ? 200 ou 404 ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  9. #9
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut
    "No input file specified."

    C'est une erreur 404, quand le serveur cherche un fichier php et que se fichier n'est pas trouvé. J'avais trouvé une descrition de cette erreur sur le net, mais je n'ai plus le lien sous la main.

    ça ne me donnais pas de solution malheureusement, juste la description.

  10. #10
    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
    Je pose la question car ce n'est pas un message d'erreur 404 d'Apache. Le terme "input file" n'est vraiment pas Apache. C'est pour ça que je pense que c'est un message PHP, donc que le problème est plutôt côté code qu'Apache.

    Pour le vérifier, le plus simple est d'éliminer la piste du code PHP pour voir comment Apache fait sa réécriture. Est-ce que tu peux remplacer ton fichier init.php par un simple fichier PHP (avec un phpinfo() par exemple) ou HTML ? Si Apache affiche cette page, Apache n'est pas en cause.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  11. #11
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut
    J'ai trouvé!

    Mon problème était causé par mon .htaccess et le mod_rewrite.

    J'ai modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ init.php
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ /init.php
    Et cela marche maintenant!

    Le problème était donc aussi simple que ça.

    Pour se que tu dis Mac, j'ai retrouvé un lien qui explique un peu se qu'est cette erreur:
    http://jenseng.com/archives/000035.html

    The reason this happens is that any requests ending in .php are simply handed off to the PHP executable without verifying that such a file exists
    Donc si le fichier n'existe pas et que c'est un fichier PHP c'est le type d'erreur 404 que l'on peu avoir !

    Mon mod_rewrite était incorrect et donc recherchait mon script PHP au mauvais endroit! Je suis du coup surpris qu'easyPHP ne m'ait pas posé le même problème.

  12. #12
    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
    Ca m'apprendra : j'y ai pensé mais j'étais convaincu pour je ne sais quelle raison que ça ne changerait rien...

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

Discussions similaires

  1. URL rewriting fonctionne en local mais pas sur serveur
    Par CinePhil dans le forum Apache
    Réponses: 2
    Dernier message: 06/11/2011, 15h16
  2. Réponses: 5
    Dernier message: 20/04/2010, 10h20
  3. Réponses: 1
    Dernier message: 18/11/2009, 13h28
  4. Réponses: 1
    Dernier message: 28/03/2007, 19h20
  5. Requête OK sur easyphp mais pas sur mon hébergeur
    Par Pgs dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/10/2006, 19h09

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