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? .