Quelqu'un peut-il m'aider ? J'ai l'impression de me frapper la tête contre un mur depuis plus de deux heures maintenant.
J'ai Apache 2.2.8 + PHP 5.2.6
installé sur ma machine et le .htaccess
avec le code ci-dessous fonctionne bien, sans erreur.
RewriteEngine on
RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
Le même code sur le serveur de mon fournisseur d'hébergement me donne un code d'erreur 404 et des sorties only: No input file specified.
index.php est là. Je sais qu'Apache est installé (je ne trouve aucune information sur la version) et qu'ils utilisent PHP v5.2.8.
Je suis sur Windows XP 64-bit
ils sont en train d'exécuter quelques Linux
con PHP
sur CGI/FastCGI
mode. Quelqu'un peut-il suggérer ce qui pourrait être le problème ?
PS. Si c'est important, c'est pour CodeIgniter
pour travailler avec des URLs amicaux.
Mise à jour1 :
mod_rewrite
est installé et allumé.
Ce que j'ai remarqué, c'est que si je change en RewriteRule
a /index.php?$1
(point d'interrogation au lieu de la barre oblique), il y a une boucle infinie. De toute façon, utiliser le point d'interrogation n'est pas une option car CodeIgniter
(obligatoire) ne fonctionnera pas de cette manière.
La page d'accueil fonctionne également lorsque je demande directement index.php : example.com/index.php
Je commence à penser que c'est peut-être apache qui pense qu'une fois que le slash de fin est ajouté, ce n'est plus un fichier mais un dossier. Comment changer un tel comportement ?
Mise à jour 2 :
J'avais tort.
Apache traite ces URL correctement.
Demande d'accès à http://example.com/index.php/start/
(page d'accueil) ou toute autre adresse valide fonctionne.
Il semble que Apache
ne transmet pas la requête pour une raison quelconque.
Mise à jour 3 :
Juste pour être clair sur ce que j'essaie d'obtenir.
Je veux réécrire les adresses comme ça :
http://www.example.com/something/ \=> http://www.example.com/index.php/something/ http://www.example.com/something/else/ \=> http://www.example.com/index.php/something/else/
0 votes
Essayez de déboguer à l'aide de la fonction de journalisation de mod_rewrite (cf.
RewriteLogLevel
).0 votes
Téléchargez un fichier PHP avec le texte :
<?php phpinfo(); ?>
- En accédant à ce fichier, vous obtiendrez tous les paramètres du serveur, y compris la version d'Apache et éventuellement une liste des modules Apache. Vous devrez vous assurer que mod_rewrite est installé afin d'utiliser ces fonctionnalités.0 votes
J'ai essayé. La version d'Apache est supprimée à partir de là.
0 votes
Je ne suis pas sûr de comprendre quel est votre problème, exactement. Est-ce que tout fonctionne maintenant ? Quelles sont les urls que vous essayez de réécrire vers / depuis ?
0 votes
Non, pas de travail. Question mise à jour.
0 votes
Gumbo : impossible d'utiliser la journalisation sur le serveur de l'hébergeur - pas d'accès à httpd.conf ou vhosts.conf
0 votes
Ensuite, essayez d'autres débogages comme celui-ci
RewriteRule ^(.*)$ /index.php/$1 RewriteCond %{QUERY_STRING} ^$ RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ /index.php?/$1 [L,R]
et voir quelle est la nouvelle requête.