内部リダイレクトと外部リダイレクトには drupal_goto() を使用する必要があります。
外部リダイレクトに 'external'オプションを使用:drupal_goto($url, array('external' => TRUE));
drupal_goto($ path = ''、array $ options = array()、$ http_response_code = 302)
$ options:(オプション)次の要素を持つ追加オプションの連想配列:
- 'query':URLに追加するクエリのキーと値のペア(URLエンコードなし)の配列。
- 'fragment':URLに追加するフラグメント識別子(名前付きアンカー)。先頭の「#」文字は含めないでください。
- 'absolute':デフォルトはFALSEです。出力を強制的に絶対リンクにするかどうか(http:で始まる)。 RSSフィードなど、サイト外に表示されるリンクに役立ちます。
- 'alias':デフォルトはFALSEです。指定されたパスがすでにURLエイリアスかどうか。
- 'external':指定されたパスが外部URLかどうか。
- 'language':オプションの言語オブジェクト。リンク先のパスがサイトの内部である場合、$ options ['language']を使用してURLのエイリアスを検索します。 $ options ['language']を省略すると、グローバルな$ language_urlが使用されます。
- 'https':このURLが安全な場所を指すかどうか。定義されていない場合、現在のスキームが使用されるため、ユーザーはそれぞれHTTPまたはHTTPSのままです。 TRUEはHTTPSを適用し、FALSEはHTTPを適用しますが、HTTPSは変数「https」がTRUEに設定されている場合にのみ適用できます。
- 'base_url':内部的にのみ使用され、言語依存のURLで必要な場合にベースURLを変更します。
- 'prefix':言語依存のURLで必要な場合にパスを変更するために、内部的にのみ使用されます。
- 'script':クリーンURLが無効になっているときに使用するDrupalのルートディレクトリ内のスクリプトファイル名( 'index.php'など)。最近のほとんどのWebサーバーは自動的に「index.php」を見つけるため、デフォルトは空の文字列です。クリーンURLが無効になっている場合、返されるURLの$ options ['script']にクエリパラメータ 'q'として$ pathの値が追加されます。 index.phpを自動的に見つけるように構成できないWebサーバーにDrupalをデプロイする場合、hook_url_outbound_alter()を実装して、この値を「index.php」にすることができます。
- 'entity_type':url()を呼び出したオブジェクトのエンティティタイプ。 entity_uri()によってurl()が呼び出された場合にのみ設定されます。
- 'entity':URLが生成されるエンティティオブジェクト(ノードなど)。 entity_uri()によってurl()が呼び出された場合にのみ設定されます。
$ http_response_code:(オプション)リダイレクトに使用するHTTPステータスコード。デフォルトは302です。3xxリダイレクトステータスコードの有効な値はRFCで定義されています2616および新しいHTTPステータスコードのドラフト:
301:永久に移動しました(ほとんどのリダイレクトの推奨値)。
302:見つかりました(DrupalおよびPHPのデフォルト。検索エンジンのスパム送信に使用される場合があります)。
303:その他を参照してください。
304:変更されていません。
305:プロキシを使用します。
307:一時的なリダイレクト。
Drupal 8
Drupal 8には 削除されたdrupal_goto関数 があり、外部URLへのリダイレクトについては この質問に対する回答:外部URLにリダイレクトするにはどうすればよいですか? を参照してください。