您应该将drupal_goto()用于内部和外部重定向。
使用“外部”选项进行外部重定向:
drupal_goto($url, array('external' => TRUE));
drupal_goto($ path ='',数组$ options = array(),$ http_response_code = 302)
$ options :(可选)附加选项的关联数组,包含以下元素:
- 'query':要附加到URL的查询键/值对数组(不包含任何URL编码)。
- 'fragment':要附加到URL的片段标识符(称为锚)。不要包含前导“#”字符。
- 'absolute':默认为FALSE。是否强制输出为绝对链接(以http:开头)。对于将在网站外部显示的链接(例如在RSS feed中)很有用。
- 'alias':默认为FALSE。给定的路径是否已经是URL别名。
- 'external':给定路径是否是外部URL。
- 'language':可选的语言对象。如果链接到的路径是站点内部的,则$ options ['language']用于查找URL的别名。如果省略$ options ['language'],将使用全局$ language_url。
- 'https':此URL是否应指向安全位置。如果未定义,则使用当前方案,因此用户分别停留在HTTP或HTTPS上。TRUE强制执行HTTPS,而FALSE强制执行HTTP,但是仅当变量'https'设置为TRUE时才能强制执行HTTPS。
- 'base_url':仅在内部使用,当依赖于语言的URL要求修改基本URL时。
- 'prefix':仅在内部使用,以在依赖于语言的URL要求时修改路径。
- 'script':禁用干净URL时,Drupal根目录中使用的脚本文件名,例如'index.php'。默认为空字符串,因为大多数现代Web服务器会自动找到“ index.php”。如果禁用了干净的URL,则$ path的值将作为查询参数'q'附加到返回URL中的$ options ['script']中。在无法配置为自动查找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?。