So stellen Sie Anfragen an eine localhost-Route an eine nicht lokale URL weiter
770
Xgongiveittoya
Ich baue eine lokale Umgebung zum Testen mit WAMP auf.
Die App (eckige App) befindet sich im Verzeichnis / wamp / www / app /. Er stellt Anforderungen an eine andere API, indem er Anforderungen an eine andere Route auf demselben Server sendet. (Speziell für / wamp / www / api / route)
Wenn ich diese .htaccess-Datei in mein Verzeichnis / wamp / www / api / route / kopiere, erwarte ich folgendes Verhalten:
Was ich möchte
Die App sendet eine Anfrage an / wamp / www / api / route / stuff / und die .htaccess-Datei in / route / nimmt diese Anfrage und leitet sie an http://api.com/stuff weiter
Was ich bekomme
Die App sendet eine Anfrage an / wamp / www / api / route / stuff / und erhält eine 404 zurück.
Ich habe sichergestellt, dass AllowOverride all eingestellt ist, dass die Umschreibungs-Engine eingeschaltet ist und das Mod-Rewrite aktiviert ist. Ich weiß, dass die .htaccess-Datei gesehen wird, denn wenn ich Müll hineinlege, bekomme ich statt der 404 eine 500, und mein Müll wird in das Protokoll aufgenommen.
Jede Hilfe wäre sehr dankbar! Vielen Dank.
Nach der Hilfe von Purefan habe ich die Protokollierung beim erneuten Schreiben aktiviert. Seit der Aktivierung gab es keine Versuche zum erneuten Schreiben, was darauf schließen lässt, dass die Regel zum erneuten Schreiben der Anforderungen nicht immer ausgeführt wird.
Ich habe jetzt versucht, den Ablauf zu ändern, wie ich die Umschreiberegel nenne.
Ich habe ein Verzeichnis in der httpd-Konfigurationsdatei wie folgt erstellt:
Denken Sie daran, dass Sie die Anforderung basierend auf URIs und nicht auf Ordnern neu schreiben. Wenn der Apache eine Anforderung erhält, wird diese mit einem Satz von Regeln in den VirtualHost-Blöcken abgeglichen. Wenn die Anforderung mit einem der VirtualHost-Blöcke übereinstimmt, verarbeiten die Regeln in diesem Block die Anforderung. Wenn die App eine Anfrage an `localhost` sendet, fängt der Block mit DocumentRoot` / wamp / www / api / route / stuff` möglicherweise ab, aber möglicherweise nicht. Überprüfen Sie Ihre Zugriffsprotokolle, und legen Sie für VirtualHost ein anderes fest, um dies zu erleichtern
Purefan vor 7 Jahren
1
Sie können auch das [Umschreibungsprotokoll] (http://httpd.apache.org/docs/current/mod/mod_rewrite.html) aktivieren, um zu sehen, was wie neu geschrieben wird
Purefan vor 7 Jahren
1
Das Protokoll zum Umschreiben klingt hilfreich. Ich werde mir das mal ansehen und wieder reinschauen. Danke!
Xgongiveittoya vor 7 Jahren
0
Eine Anfrage wird an den richtigen Ort gesendet, so scheint es, aber mit der Umschreib-Anmeldung scheint nichts jemals neu geschrieben zu werden. [03 / Feb / 2017: 11: 02: 01 -0500] "GET / api / route / stuff
Xgongiveittoya vor 7 Jahren
0
1 Antwort auf die Frage
1
Xgongiveittoya
Dank Purefan sah ich bei aktiviertem Umschreibungsprotokoll, dass beim Umschreiben versucht wurde, umzuschreiben. Die Anforderung wurde jedoch nicht gesendet.
Wenn ich das P-Flag aus der RewriteRule entfernte, wurde die Anforderung neu geschrieben, aber dann wurden meine Header nicht hinzugefügt, da wir keine Proxyfunktion hatten, was ich tun muss.
Dies führte mich dann zu der Erkenntnis, dass der Proxy nicht korrekt funktionierte, was sofort zu dieser Lösung führte:
Ändern Sie in der Datei httpd.conf
#LoadModule proxy_module modules/mod_proxy.so
zu
LoadModule proxy_module modules/mod_proxy.so
TL; DR
Aktivieren Sie mod_proxy, wenn Sie das P-Flag für eine Schreibregel verwenden möchten