Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/09/2011, 12h58   #1
Membre du Club
 
Inscription : mars 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 195
Points : 63
Points : 63
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 :
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.
rteuteu55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 14h36   #2
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 551
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 551
Points : 4 271
Points : 4 271
Salut,

As-tu utilisé un framework spécifique pour déveloper ton portail?
__________________
Alea Jacta Test!
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 15h31   #3
Membre du Club
 
Inscription : mars 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 195
Points : 63
Points : 63
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.
rteuteu55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 16h24   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 295
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 295
Points : 8 575
Points : 8 575
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
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 18h09   #5
Membre du Club
 
Inscription : mars 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 195
Points : 63
Points : 63
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 :
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 :
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 :
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 :
"GET page-1/souspage-4 HTTP/1.1" 200 5689
rteuteu55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 22h07   #6
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 295
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 295
Points : 8 575
Points : 8 575
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
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 23h15   #7
Membre du Club
 
Inscription : mars 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 195
Points : 63
Points : 63
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:

Citation:
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 :
<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.
rteuteu55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 13h22   #8
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 295
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 295
Points : 8 575
Points : 8 575
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
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 16h36   #9
Membre du Club
 
Inscription : mars 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 195
Points : 63
Points : 63
"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.
rteuteu55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 21h15   #10
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 295
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 295
Points : 8 575
Points : 8 575
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
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 22h33   #11
Membre du Club
 
Inscription : mars 2005
Messages : 195
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 195
Points : 63
Points : 63
J'ai trouvé!

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

J'ai modifié :
Code :
RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ init.php
Par :
Code :
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

Citation:
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.
rteuteu55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 09h33   #12
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 295
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 295
Points : 8 575
Points : 8 575
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
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h18.


 
 
 
 
Partenaires

Hébergement Web