Quale funzione API utilizzo per il reindirizzamento a URL esterni?


21

Quando si scrive un modulo, per il reindirizzamento ai percorsi Drupal, si usa drupal_goto.

Esiste una funzione API che dovrei usare per reindirizzare a pagine esterne? O è l'impostazione del Locationcon drupal_set_headerla strada da percorrere?

PS Devo fare qualche elaborazione sulla richiesta; mod_rewrite/ mod_aliasa livello di Apache o il Path redirectmodulo Drupal , non risolvere il mio problema.

Risposte:


25

Utilizzare drupal_goto () per reindirizzamenti interni ed esterni.

Utilizzare l'opzione 'esterno' per reindirizzamenti esterni: drupal_goto($url, array('external' => TRUE));

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

$ options: (opzionale) Un array associativo di opzioni aggiuntive, con i seguenti elementi:

  • "query" : una matrice di coppie chiave / valore della query (senza alcuna codifica URL) da aggiungere all'URL.
  • 'fragment' : un identificatore di frammento (chiamato anchor) da aggiungere all'URL. Non includere il carattere '#' principale.
  • 'absolute' : il valore predefinito è FALSE. Se forzare l'output come un collegamento assoluto (a partire da http :). Utile per i collegamenti che verranno visualizzati all'esterno del sito, ad esempio in un feed RSS.
  • 'alias' : il valore predefinito è FALSE. Se il percorso specificato è già un alias URL.
  • "esterno" : indica se il percorso specificato è un URL esterno.
  • 'lingua' : un oggetto linguaggio opzionale. Se il percorso a cui è collegato è interno al sito, $ options ['lingua'] viene utilizzato per cercare l'alias per l'URL. Se $ options ['language'] viene omesso, verrà utilizzato $ language_url globale.
  • "https" : indica se questo URL deve puntare a una posizione sicura. Se non definito, viene utilizzato lo schema corrente, quindi l'utente rimane rispettivamente su HTTP o HTTPS. TRUE applica HTTPS e FALSE applica HTTP, ma HTTPS può essere applicato solo quando la variabile 'https' è impostata su TRUE.
  • 'base_url' : utilizzato solo internamente, per modificare l'URL di base quando richiesto da un URL dipendente dalla lingua.
  • 'prefisso' : utilizzato solo internamente, per modificare il percorso quando richiesto da un URL dipendente dalla lingua.
  • 'script' : il nome file dello script nella directory principale di Drupal da usare quando gli URL puliti sono disabilitati, come 'index.php'. Il valore predefinito è una stringa vuota, poiché la maggior parte dei server Web moderni trova automaticamente "index.php". Se gli URL puliti sono disabilitati, il valore di $ path viene aggiunto come parametro di query 'q' a $ options ['script'] nell'URL restituito. Quando si distribuisce Drupal su un server Web che non può essere configurato per trovare automaticamente index.php, è possibile implementare hook_url_outbound_alter () per forzare questo valore su 'index.php'.
  • 'entity_type' : il tipo di entità dell'oggetto che ha chiamato url (). Impostato solo se url () è invocato da entity_uri ().
  • 'entità' : l'oggetto entità (come un nodo) per il quale viene generato l'URL. Impostato solo se url () è invocato da entity_uri ().

$ http_response_code: (opzionale) Il codice di stato HTTP da utilizzare per il reindirizzamento, il valore predefinito è 302. I valori validi per i codici di stato di reindirizzamento 3xx sono definiti in RFC 2616 e la bozza per i nuovi codici di stato HTTP:

301: spostato in modo permanente (il valore consigliato per la maggior parte dei reindirizzamenti).

302: Trovato (impostazione predefinita in Drupal e PHP, talvolta utilizzato per i motori di ricerca spamming).

303: Vedi Altro.

304: non modificato.

305: Usa proxy.

307: reindirizzamento temporaneo.

Drupal 8

Drupal 8 ha rimosso la funzione drupal_goto , per il reindirizzamento a un URL esterno vedi questa risposta per la domanda: Come posso reindirizzare a un URL esterno? .


1
Ottima risposta
OV

+1 tunica (e Nikhil M per l'input di modifica) Questa risposta è migliore dei documenti API ufficiali: api.drupal.org/api/drupal/includes%21common.inc/function/… (nella tua risposta, l'array di opzioni è completo descritto). +1 anche Oleg per il riconoscimento.
therobyouknow,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.