¿Qué función de API utilizo para redirigir a URL externas?

21

Al escribir un módulo, para redirigir a las rutas de Drupal, se usa drupal_goto.

¿Hay alguna función de API que debería usar para redirigir a páginas externas? O está estableciendo el Locationcon drupal_set_headerel camino a seguir?

PD: Tengo que hacer un procesamiento en la solicitud; mod_rewrite/ mod_aliasen Apache-level o el Path redirectmódulo Drupal , no resuelvan mi problema.

Chris Wesseling
fuente

Respuestas:

25

Debe usar drupal_goto () para redireccionamientos internos y externos.

Use la opción 'externa' para redireccionamientos externos: drupal_goto($url, array('external' => TRUE));

drupal_goto ($ ruta = '', matriz $ opciones = matriz (), $ http_response_code = 302)

$ options: (opcional) Una matriz asociativa de opciones adicionales, con los siguientes elementos:

  • 'query' : una matriz de pares de clave / valor de consulta (sin ninguna codificación de URL) para agregar a la URL.
  • 'fragmento' : un identificador de fragmento (denominado ancla) para agregar a la URL. No incluya el carácter principal '#'.
  • 'absoluto' : el valor predeterminado es FALSO. Si se debe forzar la salida para que sea un enlace absoluto (comenzando con http :). Útil para los enlaces que se mostrarán fuera del sitio, como en un feed RSS.
  • 'alias' : el valor predeterminado es FALSO. Si la ruta dada ya es un alias de URL.
  • 'externo' : si la ruta dada es una URL externa.
  • 'idioma' : un objeto de lenguaje opcional. Si la ruta a la que se vincula es interna al sitio, se usa $ options ['idioma'] para buscar el alias de la URL. Si se omite $ options ['language'], se usará el $ language_url global.
  • 'https' : si esta URL debe apuntar a una ubicación segura. Si no se define, se utiliza el esquema actual, por lo que el usuario permanece en HTTP o HTTPS respectivamente. VERDADERO impone HTTPS y FALSO aplica HTTP, pero HTTPS solo puede aplicarse cuando la variable 'https' está establecida en VERDADERO.
  • 'base_url' : solo se usa internamente, para modificar la URL base cuando una URL dependiente del idioma así lo requiere.
  • 'prefijo' : solo se usa internamente, para modificar la ruta cuando una URL dependiente del idioma así lo requiere.
  • 'script' : el nombre del archivo de script en el directorio raíz de Drupal para usar cuando las URL limpias están deshabilitadas, como 'index.php'. El valor predeterminado es una cadena vacía, ya que la mayoría de los servidores web modernos encuentran automáticamente 'index.php'. Si las URL limpias están deshabilitadas, el valor de $ path se agrega como parámetro de consulta 'q' a $ options ['script'] en la URL devuelta. Al implementar Drupal en un servidor web que no se puede configurar para encontrar automáticamente index.php, se puede implementar hook_url_outbound_alter () para forzar este valor a 'index.php'.
  • 'entity_type' : el tipo de entidad del objeto que llamó a url (). Solo se establece si url () es invocado por entity_uri ().
  • 'entidad' : el objeto de entidad (como un nodo) para el que se genera la URL. Solo se establece si url () es invocado por entity_uri ().

$ http_response_code: (opcional) El código de estado HTTP a utilizar para la redirección, por defecto es 302. Los valores válidos para los códigos de estado de redirección 3xx se definen en RFC 2616 y el borrador de los nuevos códigos de estado HTTP:

301: Movido permanentemente (el valor recomendado para la mayoría de los redireccionamientos).

302: Encontrado (predeterminado en Drupal y PHP, a veces utilizado para enviar spam a los motores de búsqueda).

303: Ver otro.

304: no modificado.

305: Usar proxy.

307: Redirección temporal.

Drupal 8

Drupal 8 ha eliminado la función drupal_goto , para redireccionar a una URL externa, vea esta respuesta a la pregunta: ¿Cómo redirecciono a una URL externa? .

sanzante
fuente
1
Muy buena respuesta
VO
+1 túnica (y Nikhil M para la entrada de edición) Esta respuesta es mejor que los documentos oficiales de la API: api.drupal.org/api/drupal/includes%21common.inc/function/… (en su respuesta, la matriz de opciones es integral descrito). +1 también Oleg para reconocimiento.
therobyouknow