我想知道Codeigniter redirect()
函数中位置和 referesh 之间有什么区别?
https://www.codeigniter.com/user_guide/helpers/url_helper.html
答案 0 :(得分:14)
它不必仅与Codeigniter一起使用。这些是您可以用来重新加载(或重定向)页面的两种方法。
使用Location:
标题,您将向客户端的浏览器发送3xx status code(通常为301或302),这通常表示内容已暂时移动。使用适当的代码将向客户端提供有关您进行重定向的原因的更多信息。这对搜索引擎尤其有用。
此外,浏览器在进行重定向之前不必下载所有页面的内容,但是它会立即执行,因为它从服务器获取状态代码,然后转到新页面。这样您就不会破坏浏览器的“后退”按钮。
使用Refresh
元标记或HTTP标头,您向客户端的浏览器发送请求以刷新页面,而不会显示有关您正在执行该操作的原因或原始内容和新内容的任何信息。浏览器必须首先下载所有页面内容,然后在刷新中指定的时间(以秒为单位)后,它将重定向到另一页面(通常为0秒)。
此外,如果用户点击浏览器的“后退”按钮,它将无法正常工作,因为它会将他带到上一页,它将再次使用“刷新”并将其发送到下一个按下按钮的位置
以上陈述符合W3C文章here
答案 1 :(得分:2)
Codeigniter重定向方法:
/**
* Header Redirect
*
* Header redirect in two flavors
* For very fine grained control over headers, you could use the Output
* Library's set_header() function.
*
* @access public
* @param string the URL
* @param string the method: location or redirect
* @return string
*/
if ( ! function_exists('redirect'))
{
function redirect($uri = '', $method = 'location', $http_response_code = 302)
{
if ( ! preg_match('#^https?://#i', $uri))
{
$uri = site_url($uri);
}
switch($method)
{
case 'refresh' : header("Refresh:0;url=".$uri);
break;
default : header("Location: ".$uri, TRUE, $http_response_code);
break;
}
exit;
}
}
PHP标题