web-dev-qa-db-ja.com

外部URLへのリダイレクトにはどのAPI関数を使用しますか?

モジュールを書くとき、Drupalパスにリダイレクトするために、drupal_gotoを使用します。

外部ページへのリダイレクトに使用する必要があるAPI関数はありますか?または、Locationdrupal_set_headerで設定する方法はありますか?

PSリクエストに対して何らかの処理を行う必要があります。 Apacheレベルのmod_rewrite/mod_aliasまたはDrupal Path redirectモジュール、問題を解決しないでください。

20
Chris Wesseling

内部リダイレクトと外部リダイレクトには 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にリダイレクトするにはどうすればよいですか? を参照してください。

25
sanzante