คุณควรใช้drupal_goto ()สำหรับการเปลี่ยนเส้นทางภายในและภายนอก
ใช้ตัวเลือก 'ภายนอก' สำหรับการเปลี่ยนเส้นทางภายนอก:
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 หรือไม่
- 'ภายนอก' : เส้นทางที่กำหนดเป็น URL ภายนอกหรือไม่
- 'ภาษา' : วัตถุภาษาที่เป็นตัวเลือก หากเส้นทางที่เชื่อมโยงไปยังอยู่ภายในเว็บไซต์นั้น $ options ['language'] จะถูกใช้เพื่อค้นหาชื่อแทน URL หากไม่ใส่ $ options ['language'] จะใช้ระบบ $ language_url ทั่วโลก
- 'https' : URL นี้ควรชี้ไปยังตำแหน่งที่ปลอดภัยหรือไม่ หากไม่ได้กำหนดโครงร่างปัจจุบันจะถูกใช้ดังนั้นผู้ใช้จะยังคงใช้ HTTP หรือ HTTPS ตามลำดับ TRUE บังคับใช้ HTTPS และ FALSE บังคับใช้ HTTP แต่ HTTPS สามารถบังคับใช้ได้เมื่อตัวแปร 'https' ถูกตั้งค่าเป็น TRUE
- 'BASE_URL' : ใช้ภายในเท่านั้นเพื่อแก้ไข URL พื้นฐานเมื่อ URL ที่ต้องใช้ภาษานั้นต้องการ
- 'คำนำหน้า' : ใช้ภายในเท่านั้นเพื่อแก้ไขพา ธ เมื่อ URL ที่ขึ้นกับภาษาต้องการ
- 'script' : ชื่อไฟล์สคริปต์ในไดเรกทอรีรูทของ Drupal ที่จะใช้เมื่อ URL ที่สะอาดถูกปิดใช้งานเช่น 'index.php' เริ่มต้นเป็นสตริงว่างเปล่าเนื่องจากเว็บเซิร์ฟเวอร์ที่ทันสมัยส่วนใหญ่จะค้นหา 'index.php' โดยอัตโนมัติ หากปิดการใช้งาน URL ที่สะอาดแล้วจะมีการเพิ่มค่าของ $ path เป็นพารามิเตอร์การสืบค้น 'q' ถึง $ options ['script'] ใน URL ที่ส่งคืน เมื่อปรับใช้ Drupal บนเว็บเซิร์ฟเวอร์ที่ไม่สามารถกำหนดค่าให้ค้นหา index.php โดยอัตโนมัติดังนั้น hook_url_outbound_alter () สามารถนำไปใช้เพื่อบังคับให้ค่านี้เป็น 'index.php'
- 'entity_type' : ประเภทเอนทิตีของวัตถุที่เรียกว่า url () เอนทิตี้ของ () ตั้งเฉพาะเมื่อมีการเรียกใช้ url () โดย entity_uri ()
- 'เอนทิตี' : วัตถุเอนทิตี (เช่นโหนด) ซึ่ง URL ถูกสร้างขึ้น เอนทิตี้ของ () ตั้งเฉพาะเมื่อมีการเรียกใช้ url () โดย entity_uri ()
$ 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 ภายนอกได้อย่างไร .