2016-06-02 22 views
0

Ich habe eine Live-Site und ich möchte eine Seite auf meine aktuelle Maschine umleiten, die ich entwickle. Ich habe versucht, die folgendePHP Redirect zu localhost

header('HTTP/1.1 307 Temporary Redirect'); 
header('Location: http://localhost/dev/test.php'); 

Die Umleitung soll nicht auf den Live-Server localhost getan werden, aber zu meinem lokalen Rechner verwende ich zur Zeit zu entwickeln. Dies dient lediglich dazu, ein Zahlungsgateway zu testen, das ich meiner Site hinzugefügt habe (das Zahlungsgateway benötigt eine gültige URL, zu der es umleiten kann, daher kann ich localhost nicht verwenden).

wird das Payment-Gateway zu

http://www.example.com/test.php 

umleiten, die dann auf meine aktuelle Maschine umgeleitet werden soll:

http://localhost/dev/test.php 

Wenn PHP nicht verwalten kann, kann ich dies mit Apache Umleitungen tun? Ich möchte auch alle GET und POST-Parameter, die am Live-Server empfangen werden, an meine lokale Seite senden.

+1

Die Frage ist vage ... Sicherlich können Sie einen Umleitungsheader an einen Client senden. Der reservierte Hostname 'localhost' wird immer vom _client_, nicht vom Server aufgelöst, sodass er auf das Client-System verweist. Der ganze Ablauf ist unklar, so dass ich nicht sicher bin, ob das hilft ... – arkascha

+0

Jeder Live-Server CANT Zugriff auf Ihre lokale Maschine .. Ich würde auch durch irgendwelche Mittel hinzufügen .. Dies ist einfach nicht möglich .. Der localhost ist nur ein Server, der auf Ihrem System läuft .. und das wird nicht auf eines der Live-Systeme – Sanchit

+0

zugreifen, wenn Sie die IP-Adresse geben? – bhansa

Antwort

1

Sie brauchen nicht die HTTP 1.1-Header zu senden, und das könnte das sein, was die Umleitung hindert von der Arbeit. Ihr Webserver fügt diesen automatisch hinzu, da er den Statuscode senden muss. Stattdessen übergeben Sie den 307 Status als header() 's dritten Parameter:

header('location: http://localhost/some/url', true, 307); 

Die Umleitungs-Header von Ihrem Browser analysiert werden, so ‚localhost‘ wird die gleiche Maschine seines Browser auf ausgeführt wird.

alle GET-Parameter zu übergeben, Sie $_SERVER['QUERY_STRING'] an die URL anhängen könnte:

header('location: http://localhost/some/url?' . $_SERVER['QUERY_STRING'], true, 307); 

POST-Parameter sind komplizierter. Sie müssen Ihre eigene URL erstellen, indem Sie alles aus dem Array $ _POST verketten. Achten Sie darauf, die Werte zu urlen().

$redirect_url = 'http://localhost/some/url?'; 
foreach($_POST as $key => $value){ 
    $redirect_url .= $key . '=' . urlencode($value) . '&'; 
} 
header('location: ' . $redirect_url, true, 307); 

Und bedenken Sie, dass Sie eine POST-Anfrage nur als GET umleiten können. Aber wenn Sie nur einen Test für das Testen Ihrer Gateway-Integration erstellen, sollte das in Ordnung sein.

0

Sie sollten localhost nicht verwenden, da es immer vom Client-Computer aufgelöst wird.

header('Location: http://localhost/dev/test.php'); 

Ersetzen Sie localhost durch den Server Domain-Namen wie folgt aus:

header('Location: http://yourliveserver.com/dev/test.php'); 
+0

Nein, ich möchte nicht auf meinen Live-Server umleiten, sondern auf meinen lokalen Computer. – goocreations

+0

Sie meinen, Sie wollten die Seite von Ihrer Live-Site auf Ihren lokalen Rechner umleiten? Dann benutze die IP-Adresse deines lokalen Rechners. – chin

+0

Ja, das meine ich. Ich kann meine eigene IP nicht verwenden, da mein Router zu beschissen ist, um die DMZ und lokale Auflösung zu behandeln. – goocreations