Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Informatique » Logiciel » [Apache] RewriteRules et index.php

Francesco
Modérateur
Citer Linux Safari - Posté le 06/06/2010 à 00:09
Bonjour à tous

J'ai un petit souci d'installation de CodingTeam sur un serveur ! En local, aucun souci, mais dès que je mets ça sur un hébergement, --> Erreur 404.

Je vais essayer d'expliquer clairement le problème et peut-être quelqu'un aura-t-il une idée sur la cause, car vous allez voir, c'est assez funky !

Tout d'abord, il y a un fichier .htaccess, avec les lignes suivantes :


RewriteCond %{REQUEST_URI} !^/public/(images|muclogs|upload|fortunes-vote.js|textview-(.*).js|timeline-hideshow.js|projectadmins.js).*$
RewriteCond %{REQUEST_URI} !^/inc/templates/([a-z-]+)\.css?$
RewriteCond %{REQUEST_URI} !^/inc/templates/([a-z-]+)/([a-z-]+)\.css?$
RewriteCond %{REQUEST_URI} !^/inc/templates/([a-z-]+)/images/(.*)?$
RewriteCond %{REQUEST_URI} !^/robots.txt?$
RewriteRule ^(.*)$ index.php [QSA,L]



Donc en gros, hormis, quelques URL, tout est redirigé vers index.php.

Maintenant, si on tappe l'adresse du site (par exemple, " http://monsite.fr "), le contenu du fichier index.php redirige vers " http://monsite.fr/index ".

Et c'est là que cela devient funky !
Normalement, lorsqu'on accède à " http://monsite.fr/index ", les RewriteRules devraient redigirer vers "index.php". Mais là, j'ai une belle erreur 404. Par contre, si copie mon "index.php" en "index2.php" et que je modifie la RewriteRules pour rediriger les requêtes vers "index2.php" au lieu de "index.php", alors roulez jeunesse, tout est ok !

En gros, je peux redigier vers n'importe qu'elle URL, sauf index.php (exclamation) Quelqu'un a-t-il une idée de la cause de ce comportement ? Je subodore qu'il s'agit d'un problème de configuration du serveur, puisque ca passe très bien en local. C'est juste sur mon hébergeur que ca coince :/

Je suis donc preneur de tout idée (même si ma bidouille fonctionne à merveille, j'aimerais bien comprendre pourquoi je suis obligé de la faire !)

Merci à vous (clein d'oeil)
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
RemonterCiter MacOS Firefox 3 - Posté le 06/06/2010 à 00:16

Citation de Francescosi on tappe l'adresse du site (par exemple, http://monsite.fr ), le contenu du fichier index.php redirige vers http://monsite.fr/index.Et c'est là que cela devient funky !Normalement, lorsqu'on accède à http://monsite.fr/index , les RewriteRules devraient redigirer vers index.php. Mais là, j'ai une belle erreur 404.



Si je comprend bien, on arrive sur index.php qui redirige vers index qui redirige vers index.php qui redirige vers index et ainsi de suite? (eek)
Change la caféine en lignes de code, et aurait parfois besoin de l'inverse.
Francesco
Modérateur
RemonterCiter Linux Safari - Posté le 06/06/2010 à 00:19
Oups, petite précision (car j'ai regardé le code source pour essayer de trouver l'erreur ^^)

Le fichier "index.php" ne redirige vers "index" que lorsque l'adresse est " http://monsite.fr ". Si le fichier index.php reçoit l'adresse " http://monsite.fr/index ", alors il effectue un traitement. On a pas de boucle infinie (dans ce cas, cela ne marcherait pas non plus en local !)
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
RemonterCiter MacOS Firefox 3 - Posté le 06/06/2010 à 00:22
Que contient ce fichier "index" sans extension? Il doit y avoir conflit avec ton index.php

D'ailleurs je dois dire que ça me parait bizarre ce que tu fait là.
Change la caféine en lignes de code, et aurait parfois besoin de l'inverse.
Francesco
Modérateur
RemonterCiter Linux Safari - Posté le 06/06/2010 à 00:25
ce n'est pas moi qui est pondu le fichier index (sourire) Comme je l'ai dis, c'est en essayant d'installer CodingTeam sur un serveur que le bug s'est produit (alors qu'en local, tout est ok !)

Le fichier index sans extension n'a pas d'existence. Il n'est là que pour faire joli dans l'URL je suppose :/
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
RemonterCiter MacOS Firefox 3 - Posté le 06/06/2010 à 00:45

Citation de Francescolorsqu'on accède à http://monsite.fr/index , les RewriteRules devraient redigirer vers index.php



Cette affirmation est fausse, tes règles de rewriting ne font pas cela.

S'il n'y a pas de fichier index sans extension, l'erreur 404 est donc normale.

Si cela fonctionne chez toi, c'est que ton apache est configuré avec +MultiViews, une option qui renvoie ton index.php lorsque l'on appelle index (permet l'omission de l'extension.

Par ailleurs, cette option de configuration est à déconseiller très fortement, heureusement que ton hébergeur ne l'utilise pas.
Change la caféine en lignes de code, et aurait parfois besoin de l'inverse.
Francesco
Modérateur
RemonterCiter Linux Safari - Posté le 06/06/2010 à 08:54

Citation de neligerCette affirmation est fausse, tes règles de rewriting ne font pas cela.S'il n'y a pas de fichier index sans extension, l'erreur 404 est donc normale.



Et que fais donc alors RewriteRule ^(.*)$ index.php [QSA,L] ?

Si le serveur apache reçoit un http://monsite.fr/toto , http://monsite.fr/bidule ou un http://monsite.fr/index , n'est-il pas censé me réécrire l'url en http://monsite.fr/index.php ?

J'ai jeté un petit coup d'oeil à l'option MultiViews. Elle apparait bien, mais juste pour des dossiers isolés (celui des icones et celui des utilisateurs). Bref, pas du tout à mon dossier donc !
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
RemonterCiter MacOS Firefox 3 - Posté le 06/06/2010 à 09:35

Citation de FrancescoEt que fais donc alors RewriteRule ^(.*)$ index.php [QSA,L] ?



Je n'avais pas vu que les RewriteCond étaient en exclusion.

Pour MultiViews, c'est activé d'office à moins de préciser explicitement -MultiViews

Si je pense fort à MultiViews, c'est uniquement parce que si tu appelles le scripts index2.php il n'y a plus de soucis.

D'une manière ou d'une autre, il y a confusion entre "index" et "index.php", à toi de voir ce que disent les logs, et de vérifier MultiViews sur ton serveur.
Change la caféine en lignes de code, et aurait parfois besoin de l'inverse.
Francesco
Modérateur
RemonterCiter Linux Safari - Posté le 06/06/2010 à 09:51
J'ai testé avec/sans MultiViews sur mon local, aucun effet. Par contre, sur mon serveur, c'est aussi "funky" !

Si je mets juste :
- sans option (flèche) Erreur 404
- avec "Option MultiViews" (flèche) Erreur 403
- avec "Option -MultiViews" (flèche) ok !

Problème résolu donc. Merci Neliger (sourire)
Mais je voudrais bien qu'on m'explique pourquoi j'ai 3 comportement différents, alors qu'a priori, MultiViews ne peut être qu'activé ou désactivé !

En tout cas, je file faire un bug report ^^ Merci pour tout !
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2010 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,035 s - Crédits - Stats
1 connecté