Apa fungsi API yang saya gunakan untuk mengarahkan ulang ke URL eksternal?


21

Saat menulis modul, untuk mengarahkan ulang ke jalur Drupal, seseorang menggunakan drupal_goto.

Apakah ada beberapa fungsi API yang harus saya gunakan untuk mengarahkan ulang ke halaman eksternal? Atau pengaturan Locationdengan drupal_set_headercara untuk pergi?

PS Saya harus melakukan beberapa pemrosesan atas permintaan; mod_rewrite/ mod_aliasdi tingkat Apache atau Path redirectmodul Drupal , jangan pecahkan masalah saya.

Jawaban:


25

Anda harus menggunakan drupal_goto () untuk pengalihan internal dan eksternal.

Gunakan opsi 'eksternal' untuk pengalihan eksternal: drupal_goto($url, array('external' => TRUE));

drupal_goto ($ path = '', array $ options = array (), $ http_response_code = 302)

$ options: (opsional) Array asosiatif dari opsi tambahan, dengan elemen-elemen berikut:

  • 'kueri' : Array kunci kueri / pasangan nilai (tanpa pengodean URL apa pun) untuk ditambahkan ke URL.
  • 'fragmen' : Pengidentifikasi fragmen (bernama jangkar) untuk ditambahkan ke URL. Jangan sertakan karakter '#' utama.
  • 'absolut' : Default ke FALSE. Apakah akan memaksa output menjadi tautan absolut (dimulai dengan http :). Berguna untuk tautan yang akan ditampilkan di luar situs, seperti di umpan RSS.
  • 'alias' : Default ke FALSE. Apakah jalur yang diberikan sudah alias alias.
  • 'eksternal' : Apakah jalur yang diberikan adalah URL eksternal.
  • 'bahasa' : Objek bahasa opsional. Jika path yang ditautkan ke internal situs, $ options ['language'] digunakan untuk mencari alias untuk URL. Jika $ options ['language'] dihilangkan, $ global_url global akan digunakan.
  • 'https' : Apakah URL ini harus mengarah ke lokasi yang aman. Jika tidak ditentukan, skema saat ini digunakan, sehingga pengguna masing-masing tetap menggunakan HTTP atau HTTPS. TRUE memberlakukan HTTPS dan FALSE memberlakukan HTTP, tetapi HTTPS hanya dapat diberlakukan ketika variabel 'https' disetel ke TRUE.
  • 'base_url' : Hanya digunakan secara internal, untuk memodifikasi URL dasar ketika URL yang tergantung pada bahasa mengharuskannya.
  • 'awalan' : Hanya digunakan secara internal, untuk memodifikasi jalur ketika URL yang tergantung pada bahasa mensyaratkan demikian.
  • 'script' : Nama file skrip dalam direktori root Drupal untuk digunakan ketika URL bersih dinonaktifkan, seperti 'index.php'. Default ke string kosong, karena sebagian besar server web modern secara otomatis menemukan 'index.php'. Jika URL bersih dinonaktifkan, nilai $ path ditambahkan sebagai parameter kueri 'q' ke $ options ['script'] di URL yang dikembalikan. Ketika menggunakan Drupal di server web yang tidak dapat dikonfigurasi untuk secara otomatis menemukan index.php, maka hook_url_outbound_alter () dapat diterapkan untuk memaksa nilai ini ke 'index.php'.
  • 'entity_type' : Jenis entitas dari objek yang disebut url (). Hanya atur jika url () dipanggil oleh entity_uri ().
  • 'entitas' : Objek entitas (seperti simpul) tempat URL dibuat. Hanya atur jika url () dipanggil oleh entity_uri ().

$ http_response_code: (opsional) Kode status HTTP yang akan digunakan untuk pengalihan, default ke 302. Nilai yang valid untuk kode status pengalihan 3xx didefinisikan dalam RFC 2616 dan konsep untuk kode status HTTP baru:

301: Dipindahkan Secara Permanen (nilai yang disarankan untuk sebagian besar pengalihan).

302: Ditemukan (default dalam Drupal dan PHP, kadang-kadang digunakan untuk mengirim spam ke mesin pencari).

303: Lihat Lainnya.

304: Tidak Dimodifikasi.

305: Gunakan Proxy.

307: Pengalihan Sementara.

Drupal 8

Drupal 8 telah menghapus fungsi drupal_goto , untuk mengarahkan ulang ke URL eksternal lihat jawaban ini untuk pertanyaan: Bagaimana cara mengarahkan ke URL eksternal? .


1
Jawaban yang sangat bagus
OV

+1 tunik (dan Nikhil M untuk input edit) Jawaban ini lebih baik daripada dokumen API resmi: api.drupal.org/api/drupal/includes%21common.inc/function/… (dalam jawaban Anda, array opsi secara komprehensif dijelaskan). +1 juga Oleg untuk pengakuan.
therobyouknow
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.