Überschreibung l () Funktion in Drupal
-
09-10-2019 - |
Frage
Im Moment arbeite ich an einer Drupal-Seite (6 *), die, wenn sie im Produktionsmodus wird durch eine Art von HTTP-Proxy zugegriffen werden, was bedeutet, dass ich alle die Links für mein eigenes Thema, wenn die $_SERVER['HTTP_X_FORWARDED_SERVER']
neu zu schreiben Variable wird auf die Domäne Menschen gesetzt werden aus auf die Website zugreifen.
Die Seite hat eine Menge interner Verlinkung, vor allem durch Views
. Mein Gedanke ist, dass der einfachste Weg, dies zu lösen wäre in den url()
Haken und / oder die l()
Funktionen und Post-Prozess die URL, bevor es zurückkehrt, wenn HTTP_X_FORWARDED_SERVER
gesetzt.
Mein Problem ist, dass ich nicht herausfinden kann, wie man in diese Funktionen Haken, oder ob es sogar möglich, ohne den Kern zu berühren, hat jemand hatte dies zu tun? Wie haben Sie es lösen?
UPDATE: Ich denke, ich habe vergessen zu erwähnen, dass der Proxy nicht auf Root-Ebene der Proxy-Domäne befindet, also muß ich alle Urls (sowohl interne Links und Pfade durch das System zu CSS-Dateien und Bildern usw. erzeugt wird) neu zu schreiben
Beispiele:
proxy.com/path -> site.com/lots/of/dirs
proxy.com/path/node/1 -> site.com/lots/of/dirs/node/1
proxy.com/path/sites/all/themes/mytheme/my.css -> site.com/lots/of/dirs/sites/all/themes/mytheme/my.css
Lösung
Ich bin mir nicht sicher, ob ich völlig verstehen, was Sie brauchen, aber ich glaube, Sie einen Blick auf die custom_url_rewrite_inbound () und custom_url_rewrite_outbound () Funktionen.
Andere Tipps
Am Ende habe ich den Kern leicht zu modifizieren, in bootstrap.inc die folgenden Zeile ersetzt
$server = explode('.', implode('.', array_reverse(explode(':', rtrim($_SERVER['HTTP_HOST'], '.')))));
mit
$host = $_SERVER['HTTP_X_FORWARDED_HOST'] ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $_SERVER['HTTP_HOST'];
$server = explode('.', implode('.', array_reverse(explode(':', rtrim($host, '.')))));
Dann habe ich gerade einen neuen Standortordner mit meinem proxy.com url und geändert $base_url
und $cookie_domain
im settings.php einrichten