Qual função da API eu uso para redirecionar para URLs externos?


21

Ao escrever um módulo, para redirecionar para caminhos do Drupal, é usado drupal_goto.

Existe alguma função da API que devo usar para redirecionar para páginas externas? Ou está definindo o Locationcom drupal_set_headero caminho a percorrer?

PS Eu tenho que fazer algum processamento na solicitação; mod_rewrite/ mod_aliasno nível Apache ou no Path redirectmódulo Drupal , não resolva meu problema.

Respostas:


25

Você deve usar drupal_goto () para redirecionamentos internos e externos.

Use a opção 'externa' para redirecionamentos externos: drupal_goto($url, array('external' => TRUE));

drupal_goto ($ caminho = '', matriz $ opções = matriz (), $ http_response_code = 302)

$ options: (opcional) Uma matriz associativa de opções adicionais, com os seguintes elementos:

  • 'query' : uma matriz de pares de chave / valor de consulta (sem codificação de URL) a serem anexados à URL.
  • 'fragmento' : um identificador de fragmento (denominado âncora) a ser anexado ao URL. Não inclua o caractere '#' inicial.
  • 'absoluto' : o padrão é FALSO. Se deve forçar a saída para ser um link absoluto (começando com http :). Útil para links que serão exibidos fora do site, como em um feed RSS.
  • 'alias' : o padrão é FALSE. Se o caminho fornecido já é um alias de URL.
  • 'external' : se o caminho fornecido é um URL externo.
  • 'language' : um objeto de idioma opcional. Se o caminho ao qual está sendo vinculado for interno ao site, $ options ['language'] será usado para procurar o alias do URL. Se $ options ['language'] for omitido, o global $ language_url será usado.
  • 'https' : se esse URL deve apontar para um local seguro. Se não definido, o esquema atual é usado, para que o usuário permaneça em HTTP ou HTTPS, respectivamente. TRUE impõe HTTPS e FALSE impõe HTTP, mas HTTPS só pode ser imposto quando a variável 'https' estiver configurada como TRUE.
  • 'base_url' : usado apenas internamente, para modificar o URL base quando um URL dependente do idioma o exigir.
  • 'prefixo' : usado apenas internamente, para modificar o caminho quando um URL dependente do idioma o exigir.
  • 'script' : o nome do arquivo do script no diretório raiz do Drupal a ser usado quando URLs limpos estiverem desabilitados, como 'index.php'. O padrão é uma string vazia, pois a maioria dos servidores web modernos encontra automaticamente 'index.php'. Se URLs limpos estiverem desativados, o valor de $ path será anexado como parâmetro de consulta 'q' a $ options ['script'] no URL retornado. Ao implantar o Drupal em um servidor Web que não pode ser configurado para encontrar automaticamente o index.php, o hook_url_outbound_alter () pode ser implementado para forçar esse valor a 'index.php'.
  • 'entity_type' : o tipo de entidade do objeto que chamou url (). Defina apenas se url () for chamado por entity_uri ().
  • 'entidade' : o objeto da entidade (como um nó) para o qual a URL está sendo gerada. Defina apenas se url () for chamado por entity_uri ().

$ http_response_code: (opcional) O código de status HTTP a ser usado para o redirecionamento é o padrão 302. Os valores válidos para os códigos de status de redirecionamento 3xx são definidos na RFC 2616 e o ​​rascunho para os novos códigos de status HTTP:

301: movido permanentemente (o valor recomendado para a maioria dos redirecionamentos).

302: Encontrado (padrão no Drupal e PHP, às vezes usado para mecanismos de pesquisa de spam).

303: Veja Outros.

304: Não modificado.

305: Use Proxy.

307: Redirecionamento temporário.

Drupal 8

O Drupal 8 removeu a função drupal_goto . Para redirecionar para URL externo, consulte esta resposta para a pergunta: Como redirecionar para um URL externo? .


1
Resposta muito boa
OV

Túnica +1 (e Nikhil M para entrada de edição) Essa resposta é melhor que os documentos oficiais da API: api.drupal.org/api/drupal/includes%21common.inc/function/… (em sua resposta, a matriz de opções é abrangente descrito). +1 também Oleg para reconhecimento.
Therobyouknow 10/11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.