Welche API-Funktion verwende ich für die Umleitung zu externen URLs?

21

Beim Schreiben eines Moduls wird zum Umleiten auf Drupal-Pfade verwendet drupal_goto.

Gibt es eine API-Funktion, die ich zum Umleiten auf externe Seiten verwenden sollte? Oder setzt die Locationmit drupal_set_headerdem Weg zu gehen?

PS: Ich muss die Anfrage noch bearbeiten. mod_rewrite/ mod_aliasAuf Apache-Ebene oder dem Drupal- Path redirectModul kann ich mein Problem nicht lösen.

Chris Wesseling
quelle

Antworten:

25

Sie sollten drupal_goto () für interne und externe Weiterleitungen verwenden.

Verwenden Sie die Option 'external' für externe Weiterleitungen: drupal_goto($url, array('external' => TRUE));

drupal_goto ($ path = '', array $ options = array (), $ http_response_code = 302)

$ options: (optional) Ein assoziatives Array zusätzlicher Optionen mit den folgenden Elementen:

  • 'query' : Ein Array von Abfrage-Schlüssel / Wert-Paaren (ohne URL-Codierung) zum Anhängen an die URL.
  • 'fragment' : Ein Fragmentbezeichner (benannter Anker), der an die URL angehängt werden soll. Fügen Sie nicht das führende '#' ein.
  • 'absolut' : Der Standardwert ist FALSE. Gibt an, ob die Ausgabe eine absolute Verknüpfung sein soll (beginnend mit http :). Nützlich für Links, die außerhalb der Site angezeigt werden, z. B. in einem RSS-Feed.
  • Der Standardwert ist FALSE. Gibt an, ob der angegebene Pfad bereits ein URL-Alias ​​ist.
  • 'external' : Gibt an , ob der angegebene Pfad eine externe URL ist.
  • 'language' : Ein optionales Sprachobjekt. Wenn der Pfad, auf den verwiesen wird, intern zur Site ist, wird mit $ options ['language'] der Alias ​​für die URL gesucht. Wenn $ options ['language'] weggelassen wird, wird die globale $ language_url verwendet.
  • 'https' : Gibt an, ob diese URL auf einen sicheren Speicherort verweisen soll. Wenn nicht definiert, wird das aktuelle Schema verwendet, sodass der Benutzer auf HTTP bzw. HTTPS bleibt. TRUE erzwingt HTTPS und FALSE erzwingt HTTP. HTTPS kann jedoch nur erzwungen werden, wenn die Variable 'https' auf TRUE gesetzt ist.
  • 'base_url' : Wird nur intern verwendet, um die Basis-URL zu ändern, wenn eine sprachabhängige URL dies erfordert.
  • 'Präfix' : Wird nur intern verwendet, um den Pfad zu ändern, wenn eine sprachabhängige URL dies erfordert.
  • 'script' : Der Skript-Dateiname im Drupal-Stammverzeichnis, der verwendet werden soll, wenn saubere URLs deaktiviert sind, z. B. 'index.php'. Der Standardwert ist eine leere Zeichenfolge, da die meisten modernen Webserver die Datei 'index.php' automatisch finden. Wenn saubere URLs deaktiviert sind, wird der Wert von $ path als Abfrageparameter 'q' an $ options ['script'] in der zurückgegebenen URL angehängt. Wenn Sie Drupal auf einem Webserver bereitstellen, der nicht so konfiguriert werden kann, dass index.php automatisch gefunden wird, kann hook_url_outbound_alter () implementiert werden, um diesen Wert auf 'index.php' zu setzen.
  • 'entity_type' : Der Entitätstyp des Objekts, das url () aufgerufen hat. Nur setzen, wenn url () von entity_uri () aufgerufen wird.
  • 'entity' : Das Entitätsobjekt (z. B. ein Knoten), für das die URL generiert wird. Nur setzen, wenn url () von entity_uri () aufgerufen wird.

$ http_response_code: (optional) Der für die Umleitung zu verwendende HTTP-Statuscode ist standardmäßig 302. Die gültigen Werte für 3xx-Umleitungsstatuscodes sind in RFC 2616 und dem Entwurf für die neuen HTTP-Statuscodes definiert:

301: Permanent verschoben (der empfohlene Wert für die meisten Weiterleitungen).

302: Gefunden (Standard in Drupal und PHP, manchmal für Spam-Suchmaschinen verwendet).

303: Siehe Andere.

304: Nicht geändert.

305: Proxy verwenden.

307: Temporäre Umleitung.

Drupal 8

Drupal 8 hat die Funktion drupal_goto entfernt . Für die Umleitung zu einer externen URL siehe diese Antwort für die Frage: Wie leite ich zu einer externen URL um? .

sanzante
quelle
1
Sehr gute Antwort
OV
+1 Tunika (und Nikhil M für Bearbeitungseingaben) Diese Antwort ist besser als die offiziellen API-Dokumente: api.drupal.org/api/drupal/includes%21common.inc/function/… (in Ihrer Antwort ist das Options-Array umfassend beschrieben). +1 auch Oleg für die Anerkennung.
Therobyouknow