Harici URL’lere yönlendirmek için hangi API işlevini kullanırım?


21

Bir modül yazarken, Drupal yollarına yönlendirmek için bir tane kullanılır drupal_goto.

Dış sayfalara yönlendirmek için kullanmam gereken bazı API işlevi var mı? Ya ayarlıyor Locationile drupal_set_headergitmek için yol?

PS İstek üzerine işlem yapmak zorundayım; mod_rewrite/ mod_aliasApache düzeyinde veya Drupal Path redirectmodülünde, sorunumu çözmeyin.

Yanıtlar:


25

İç ve dış yönlendirmeler için drupal_goto () kullanmanız gerekir .

Harici yönlendirmeler için 'external' seçeneğini kullanın: drupal_goto($url, array('external' => TRUE));

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

$ options: (isteğe bağlı) Aşağıdaki öğelere sahip, bir seçenek ek seçenek dizisi:

  • 'query' : URL'ye eklenecek bir sorgu anahtarı / değer çiftleri dizisi (URL kodlaması olmadan).
  • 'fragment' : URL'ye eklenecek bir fragman tanımlayıcısı (çapa adında). Baştaki '#' karakterini eklemeyin.
  • 'absolute' : Varsayılan olarak FALSE. Çıktının mutlak bir bağlantı olmaya zorlanıp zorlanmayacağı (http :) ile başlar. RSS beslemesi gibi, site dışında görüntülenecek bağlantılar için kullanışlıdır.
  • 'alias' : Varsayılan olarak FALSE. Verilen yolun zaten bir URL takma adı olup olmadığı.
  • 'external' : Verilen yolun harici bir URL olup olmadığı.
  • 'dil' : İsteğe bağlı bir dil nesnesi. Bağlanan yol sitenin içindeyse, URL'nin diğer adını aramak için $ options ['language'] kullanılır. $ Options ['language'] atlanırsa, global $ language_url kullanılacaktır.
  • 'https' : Bu URL'nin güvenli bir yere işaret edip etmemesi gerektiği. Tanımlanmamışsa, geçerli şema kullanılır, böylece kullanıcı sırasıyla HTTP veya HTTPS'de kalır. TRUE, HTTPS'yi ve FALSE, HTTP'yi zorlar, ancak HTTPS yalnızca 'https' değişkeni TRUE olarak ayarlandığında zorlanabilir.
  • 'base_url' : Dile bağlı bir URL gerektirdiğinde temel URL'yi değiştirmek için yalnızca dahili olarak kullanılır.
  • 'önek' : Dile bağlı bir URL gerektirdiğinde yolu değiştirmek için yalnızca dahili olarak kullanılır.
  • 'script' : 'index.php' gibi temiz URL'ler devre dışı bırakıldığında kullanılacak Drupal'ın kök dizinindeki komut dosyası adı. Çoğu modern web sunucusu otomatik olarak 'index.php'yi bulduğundan, varsayılan olarak boş bir dize. Temiz URL'ler devre dışı bırakılırsa, $ yolunun değeri, döndürülen URL'deki $ q seçeneklerine ['script'] 'q' sorgu parametresi olarak eklenir. Drupal'ı index.php'yi otomatik olarak bulmak üzere yapılandırılamayan bir web sunucusunda dağıtırken, bu değeri 'index.php' zorlamak için hook_url_outbound_alter () uygulanabilir.
  • 'entity_type' : url () adlı nesnenin varlık türü. Sadece url () entity_uri () tarafından çağrılırsa ayarlanır.
  • 'varlık' : URL'nin üretildiği varlık nesnesi (düğüm gibi). Sadece url () entity_uri () tarafından çağrılırsa ayarlanır.

$ http_response_code: (isteğe bağlı) Yeniden yönlendirme için kullanılacak HTTP durum kodu, varsayılan değer 302'dir. 3xx yeniden yönlendirme durum kodları için geçerli değerler RFC 2616'da ve yeni HTTP durum kodları için taslakta tanımlanmıştır:

301: Kalıcı Olarak Taşındı (çoğu yönlendirme için önerilen değer).

302: Bulunan (varsayılan olarak Drupal ve PHP'de, bazen arama motorlarını spam göndermek için kullanılır).

303: Diğerine bakınız.

304: Değiştirilmedi.

305: Proxy kullanın.

307: Geçici Yönlendirme.

Drupal 8

Drupal 8, drupal_goto fonksiyonunu kaldırdı , harici URL'ye yönlendirme için şu cevaba bakınız : Bir harici URL'ye nasıl yönlendirebilirim? .


1
Çok iyi cevap
OV

+1 tunik (ve girişi düzenlemek için Nikhil M) Bu cevap resmi API dokümanlarından daha iyidir: api.drupal.org/api/drupal/includes%21common.inc/function/… (cevabınızda, seçenekler dizisi kapsamlıdır) tarif edilmiştir). +1 ayrıca tanıma için Oleg.
therobyouknow 10:15
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.