本文目录一览:
- 1、php 函数重定向 Warning: Cannot modify header information - headers already sent by (output
- 2、怎么做301转向,asp,php301重定向跳转代码
- 3、thinkphp内核程序,无法重定向
- 4、如何用 PHP 实现 302 重定向到其他 URL
php 函数重定向 Warning: Cannot modify header information - headers already sent by (output
检查以下两个方面:
一、在文件的第一个?php之前不得有任何内容,包括空白、空行
二、在header('Location:news_list.php?message=$message');语句之前不得有任何的echo或者其它输出内容的语句
满足以上两点的情况下,就不会报告你这个错误。
怎么做301转向,asp,php301重定向跳转代码
301跳转代码全集(ASP|PHP|JSP|.NET)
1、IIS下301设置
Internet信息服务管理器 - 虚拟目录 - 重定向到URL,输入需要转向的目标URL,并选择“资源的永久重定向”。
2、ASP下的301转向代码
%@ Language=VBScript %
%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “”
%
3、ASP.Net下的301转向代码
script runat=”server”
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(”Location”,””);
}
/script
4、PHP下的301转向代码
header(”HTTP/1.1 301 Moved Permanently”);
header(”Location: ”);
exit();
5、CGI Perl下的301转向代码
$q = new CGI;
print $q-redirect(””);
6、JSP下的301转向代码
%
response.setStatus(301);
response.setHeader( “Location”,“” );
response.setHeader( “Connection”,“close” );
%
7、Apache下vhosts.conf中配置301转向
为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配置为:
VirtualHost *:80
ServerName
DocumentRoot
/VirtualHost
VirtualHost *:80
ServerName xxx.com
RedirectMatch permanent ^/(.*)
/VirtualHost
8、Apache下301转向代码
新建.htaccess文件,输入下列内容(需要开启mod_rewrite):
1)将不带WWW的域名转向到带WWW的域名下
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^xxx.com [NC]
RewriteRule ^(.*)$ [L,R=301]
2)重定向到新域名
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ [L,R=301]
3)使用正则进行301转向,实现伪静态
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+)\.html$ news.php?id=$1
将news.php?id=123这样的地址转向到news-123.html
最后:在使用301永久性重定向命令让多个域名指向网站主域名时,也不会对网站的排名产生任何负面影响。希望对你有帮助。
thinkphp内核程序,无法重定向
ThinkPHP redirect 方法
ThinkPHP redirect 方法可以实现页面的重定向(跳转)功能。redirect 方法语法如下:
$this-redirect(string url, array params, int delay, string msg)
参数说明:
参数
说明
url 必须,重定向的 URL 表达式。
params 可选,其它URL参数。
delay 可选, 重定向延时,单位为秒。
msg 可选,重定向提示信息。
ThinkPHP redirect 实例
在 Index 模块 index 方法中,重定向到本模块的 select 操作:
class IndexAction extends Action{
public function index(){
$this-redirect('select', array('status'=1), 3, '页面跳转中~');
}
}
重定向后得到的 URL 可能为ex.php/Index/select/status/1
由于该方法调用了 U 函数来生成实际的 URL 重定向地址,因此重定向后的 URL 可能因配置不同而有所不同:
隐藏了入口文件 index.php 的
5idev.com/Index/select/status/1
隐藏了入口文件 index.php 且设置了伪静态的
hom/Index/select/status/1.html
一些常用的 redirect 重定向例子:
// 不延时,直接重定向
$this-redirect('select', array('status'=1));
// 延时跳转,但不带参数,输出默认提示
$thi s-redirect('select', '', 3);
// 重定向到其他模块操作
$this-redirect('Public/login');
// 重定向到其他分组
$this-redirect('Admin-Public/login');
提示: 1.当延时跳转时,必须输入 params 参数(可以为空),也就是 delay 必须出现在第 3 位上。
2.如果发现跳转后的 URL 有问题,由于 redirect 方法调用 U 方法来生成跳转后的地址,这时候可以测试一下 U 方法生成的地址是否正确,再检查一下系统配置。
3.如果不想使用 U 方法生成跳转地址,可以直接使用 PHP header 函数或 $this-redirect 的原型函数 redirect(string url, int delay, string msg),注意该 url 是个绝对地址,具体参见 PHP header 函数。
redirect 重定向与 success/error 跳转的区别
•redirect 是使用的 PHP header 重定向,而 success/error 是使用的 html meta http-equiv='Refresh' 属性跳转。
•redirect 无模板页面,输出的提示信息是直接在函数内 echo 输出的,而 success/error 有对应的模板。
•redirect 与 success/error 都可以实现页面的跳转,只是 redirect 可以无延时重定向,具体采用哪种视具体情况而定。
如何用 PHP 实现 302 重定向到其他 URL
302是临时重定向的意思。表示被访问页面因为各种需要被临时跳转到其他页面。
PHP里的302重定向非常简单,只要在返回的HTTP Response Header里添加Location字段,PHP将自动返回302状态码。
例如:
?php
header("Location: URL地址");
?
这段代码将自动重定向到URL地址
注意的是,跳转不是在收到response header的时候马上进行,也就是说页面的剩余内容会被下载来之后浏览器才会跳转。新手常犯的一个错误是,在逻辑判断时对符合条件的情况进行header跳转之后,忘了在之后加上exit(),导致错误。例如,用user_login()判断用户是否进行了登录,如果未登录则跳转到登录页面。代码如下:
?php
if(!user_login()){
header("Location:login.php");
}
//display contents for login users.
?
这里,容易以为header之后这段代码就结束了,没有在header之后使用exit()。后面的代码继续被执行,导致未登录用户看到了已登录用户才能看到的内容。