it-swarm.com.de

Welche API-Funktion verwende ich zum Umleiten zu externen URLs?

Beim Schreiben eines Moduls wird zum Umleiten auf Drupal Pfade] drupal_goto Verwendet.

Gibt es eine API-Funktion, die ich zum Umleiten auf externe Seiten verwenden sollte? Oder ist das Setzen von Location mit drupal_set_header Der richtige Weg?

PS Ich muss die Anfrage bearbeiten. mod_rewrite/mod_alias Auf Apache-Ebene oder im Modul Drupal Path redirect, Löse mein Problem nicht.

20
Chris Wesseling

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

Verwenden Sie die Option 'external' für externe Umleitungen: 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 Abfrageschlüssel/Wert-Paaren (ohne URL-Codierung) zum Anhängen an die URL.
  • 'fragment' : Eine Fragmentkennung (benannter Anker) zum Anhängen an die URL. Fügen Sie nicht das führende '#' ein.
  • 'absolut' : Standardmäßig FALSE. Gibt an, ob die Ausgabe als absoluter Link erzwungen werden soll (beginnend mit http :). Nützlich für Links, die außerhalb der Site angezeigt werden, z. B. in einem RSS-Feed.
  • 'alias' : Standardmäßig 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, mit dem verknüpft wird, intern zur Site ist, wird $ options ['language'] verwendet, um den Alias ​​für die URL zu suchen. 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, aber HTTPS kann 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 Skriptdateiname im Stammverzeichnis von Drupal, der verwendet werden soll, wenn saubere URLs deaktiviert sind, z. B. 'index.php'. Der Standardwert ist eine leere Zeichenfolge, da die meisten modernen Webserver automatisch 'index.php' finden. Wenn saubere URLs deaktiviert sind, wird der Wert von $ path als Abfrageparameter 'q' an $ options ['script'] in der zurückgegebenen URL angehängt. Bei der Bereitstellung von Drupal auf einem Webserver, 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 festlegen, wenn url () von entity_uri () aufgerufen wird.
  • 'entity' : Das Entitätsobjekt (z. B. ein Knoten), für das die URL generiert wird. Nur festlegen, 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 definiert 2616 und der Entwurf für die neuen HTTP-Statuscodes:

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: Verwenden Sie Proxy.

307: Temporäre Weiterleitung.

Drupal 8

Drupal 8 hat Funktion drupal_goto entfernt , zur Umleitung zu einer externen URL siehe diese Antwort auf die Frage: Wie leite ich zu einer externen URL um? .

25
sanzante