2009-04-28 6 views
2

J'essaye de porter un site PHP développé par un autre codeur (qui n'est plus là) et j'ai un problème avec les règles d'Apache Rewrite qui demandent un téléchargement de fichier sur le serveur cible . Je suis sûr que c'est un problème simple, mais j'ai de la difficulté à googler une réponse. Je cours sur un serveur Ubuntu (dédié) avec une installation standard d'Apache et de PHP5 et le portage depuis partagé un serveur partagé où tout fonctionne bien. Aucun fichier de site n'a été modifié pendant le port.La règle de réécriture d'Apache force le téléchargement

Le fichier .htaccess contient ce code (seulement)

 
# Use PHP5 as default 
AddHandler application/x-httpd-php5 .php 
Options -Indexes FollowSymlinks 


RewriteEngine on 
RewriteRule ^html/(.*)  /index.php?init=site\/$1\/$2\/$3\/$4\/$5\/$6\/$7\/$8\/$9 

RewriteRule ^mykart$   /index.php?admin=true 
RewriteRule ^mykart/$  /index.php?admin=true 
RewriteRule ^mykart/(.*)$ /index.php?init=admin\/$1\/$2\/$3\/$4\/$5\/$6\/$7\/$8\/$9&admin=true 


Lorsque je tente d'ouvrir le fichier http://www.mysite.com/html/#home le navigateur tente de télécharger le fichier (index.php) au lieu de l'afficher, avec le message

"Vous avez choisi d'ouvrir [boîte de dialogue affiche l'espace vide ici]

qui est une application/x-httpd-php de .... "

Je suppose que j'ai dû manquer quelque chose dans la configuration PHP ou Apache, mais quoi?

EDIT: Pour clarifier, le serveur exécute Apache2 et a plusieurs sites PHP fonctionnels. De plus, si je supprime le fichier .htaccess et que j'exécute une simple page d'affichage de phpinfo tout va bien, donc ce n'est pas l'exécution de PHP par voir.

+0

Ce n'est probablement pas la cause de votre problème. Mais si vous avez juste un groupe dans votre modèle, vous pourriez juste avoir un match et ainsi seulement utiliser $ 1 (à part le $ 0 pour le match entier). Et vous n'avez pas besoin d'échapper '/', ni dans le motif, ni dans la partie de substitution. – Gumbo

+0

Oh, juste une autre pensée: J'espère que quelqu'un ne peut pas obtenir des privilèges d'administrateur en ajoutant simplement 'admin = true' à l'URL. – Gumbo

+0

Heh. Ce n'est qu'une partie d'une série de sites que j'ai pris en charge et dire qu'ils sont en proie à des problèmes est un euphémisme. Ajout d'admin ne fonctionnerait pas, mais il y a beaucoup d'autres trous – Cruachan

Répondre

3

Je suppose que le type MIME application/x-httpd-php5 est pas valide. Je l'ai essayé sur ma machine locale et cela a causé le même comportement.

Avez-vous essayé application/x-httpd-php à la place?

+0

Merci, oui qui semble le résoudre. Très apprécié, j'ai une expérience limitée sur Apache (beaucoup plus familier avec PHP sur la pile de windows) – Cruachan

0

Cela ressemble à un problème de configuration Apache, bien sûr, je peux me tromper. Avez-vous vérifié httpd.conf les lignes suivantes:

# Add index.php to your DirectoryIndex line: 
DirectoryIndex index.html index.php 

AddType text/html  php 
0

J'ai eu un problème similaire. Le navigateur a tenté de télécharger des liens à partir du site Web de php, au lieu de les charger.

Ce n'était pas un problème d'interprète Php pour moi, il s'est avéré être un fichier .htaccess mal placé. Cependant, je n'ai pas réalisé que la désactivation du fichier htaccess résolvait le problème pendant des heures, en raison du cache du navigateur.

Donc, ne pas oublier d'effacer les caches de votre navigateur! Et redémarrez Apache.

Questions connexes