PHP sur IIS 7 - Réception “Objet Déplacé” de la page html au lieu de les rediriger
Je suis en train d'apprendre le PHP sur mon ordinateur avec IIS7.5 comme le serveur web et je rencontre un problème de terminer une redirection 301 pour rediriger correctement.
Les tutos et les forums disent tous à utiliser les éléments suivants:
Header('Location: ' . $url, true, 301);
OU
Header('Location: ' . $url);
Dans les deux cas, au lieu de les rediriger le navigateur (Chrome et Firefox) afficher ce:
Object Moved
This document may be found here
À l'aide de la web FireFox barre d'outils du développeur, j'ai récupéré les en-têtes de page, qui sont:
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/7.5
X-Powered-By: PHP/5.3.5, ASP.NET
Date: Mon, 21 Mar 2011 18:47:35 GMT
Content-Length: 123
301 Moved Permanently
Pourquoi la page est-elle pas la redirection? L'affichage de cette page est une sorte de redondant et ennuyeux pour les utilisateurs.
OriginalL'auteur Nathan Ridley | 2011-03-21
Vous devez vous connecter pour publier un commentaire.
J'ai tout compris. L'Emplacement de l'en-tête doit être un chemin absolu de redirection automatique vers. Si c'est un chemin relatif, il n'est pas redirigé.
J'ai observé le même résultat dans FireFox 3.6, Chrome et 10. IE9 ne rien faire du tout, il affiche une page d'erreur.
OriginalL'auteur Nathan Ridley
J'ai eu un problème similaire, mais le chemin était déjà absolue. Je l'ai résolu en envoyant un 301-tête avant de l'emplacement. PHP est censé détecter les redirections et les faire automatiquement, mais n'était pas en train de faire.
OriginalL'auteur voidstate
J'ai eu ce problème à l'aide de PHP sur IIS7 à l'aide de l'URL absolue. M'énerve pour un peu de temps. Assurez-vous de mettre
exit();
après votre
header('location: https://domain.tld/resource');
l'en-tête ne s'arrête pas l'exécution, et la fonction dans le cas contraire, de retour quelque part qui peut donner des résultats inattendus.
OriginalL'auteur user138720
J'ai pensé à un simple hack pour résoudre ce problème. Utiliser un Sortant de Rediriger une règle pour définir le Contenu de la Longueur de l'en-tête de rediriger les réponses à 0. Les navigateurs tronquer l'envoyé corps de la réponse automatiquement en fonction du Contenu de la Longueur d'en-tête.
Voici ma règle redirect:
Je vous conseille d'utiliser ça comme une référence pour créer un nouveau sortant de la règle de réécriture à l'aide du Gestionnaire des services IIS que l'édition web.les fichiers de configuration directement, peut avoir des résultats inattendus.
Mise à jour:
Apparemment, il y a une directive PHP qui modifie le format des en-têtes pour les aider avec ceci:
cgi.rfc2616_headers = 1
J'ai testé sur mon serveur, et il semble que la question ainsi.
Avez-vous essayé de fixer un conditionnel règle sortante? Je pense que votre commentaire probablement garantit une toute nouvelle question avec tous les détails et les informations nécessaires pour y répondre.
Ouais, c'est ce que je pensais. Posté ici: forums.iis.net/p/1234223/...
OriginalL'auteur Chaoix