欢迎各位兄弟 发布技术文章
这里的技术是共享的
在Drupal 7中,使用 drupal_goto() 函数时,它会默认对传递的路径进行转码 (URL encoding),但有时候你可能看到它执行一些意想不到的行为,尤其是当你的 URL 包含查询参数时。
drupal_goto($path, $options = array())
$path: 目标路径。
$options: 可选的参数,可以用于控制重定向行为,比如提供状态代码、附加查询字符串等。
以下是一个简单的例子:
php// 执行重定向 drupal_goto('aaaa', array('query' => array('bbb' => 1)));
URL 编码: drupal_goto() 会对 path 参数进行转码,确保 URL 的安全。当要传递的 URL 包含查询参数时,建议使用 options 参数来传递查询参数。
保留现有查询参数: 如果你希望保留现有的查询参数,使用 drupal_goto() 的 options 参数中进行构造。例如:
php// 重定向到 'aaaa' 路径,同时保留 'bbb' 查询参数 drupal_goto('aaaa', array('query' => $_GET));
完整重定向: 如果你想要重定向到一个完整的 URL(带有查询字符串),则可以这样做:
phpdrupal_goto('http://example.com/aaaa?bbb=1');
使用 drupal_goto() 时,如果需要传递查询参数,建议使用 array('query' => array()) 的方式来确保参数的正确处理和编码。这不仅可以提高代码的可读性,还能避免由于手动拼接 URL 而可能出现的错误。