PHP auf IIS7 - Empfang "Objekt Verschoben" html-Seite anstelle des eigentlich umleiten
Lerne ich PHP auf meinem computer mit IIS7.5 als web-server und habe ein problem Abschluss einer 301-Weiterleitung korrekt.
Den tutorials und Foren alle sagen, die folgenden:
Header('Location: ' . $url, true, 301);
ODER
Header('Location: ' . $url);
In beiden Fällen, statt tatsächlich umleiten, den browser (Chrome und Firefox) die Anzeige dieses:
Object Moved
This document may be found here
Mit der FireFox web developer toolbar, die ich abgerufen den Kopfzeilen, die waren:
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
Warum ist die Seite nicht umleiten? Die Anzeige, die Seite ist sowas von überflüssig und ärgerlich für die Nutzer.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es herausgefunden. Der Location-header muss ein absoluter Pfad sein, um auto-redirect. Wenn es sich um einen relativen Pfad, der nicht umleiten.
Ich hatte ein ähnliches Problem, aber der Weg war schon absolut. Ich löste es, indem speziell das senden einer 301-header, bevor die Lage. PHP ist eigentlich zu erkennen, Umleitungen und tun dies automatisch, aber war nicht dabei.
Hatte ich dieses problem mit PHP auf IIS7 mit absoluten URL. Nervte mich für eine kleine Weile. Sicherzustellen, dass Sie
exit();
nach Ihrem
header('Location: https://domain.tld/resource');
der Kopf hört nicht auf die Ausführung, und die Funktion wird sonst Rückkehr irgendwo geben, vielleicht unerwartete Ergebnisse.
Dachte ich, ein einfacher hack, um dieses Problem zu beheben. Die Verwendung eines Ausgehenden Redirect-Regel, um die Content-Length-header in der redirect-Antworten 0. Browser abschneiden geschickt, Antwort Körper automatisch basierend auf dem Content-Length-header.
Hier ist mein redirect-Regel:
Ich würde empfehlen, das als Referenz zum erstellen einer neuen ausgehenden rewrite-Regel mithilfe der IIS-Manager-so Bearbeiten Sie web.config-Dateien direkt kann zu unerwarteten Ergebnissen führen.
Update:
Offenbar gibt es eine PHP-Anweisung, ändert das format des headers zu helfen, mit diesem als gut:
cgi.rfc2616_headers = 1
Habe ich getestet auf meinem server, und das scheint zu helfen, das Problem so gut.