PHP重定向到另一个URL /网页脚本示例

时间:2020-01-09 10:43:00  来源:igfitidea点击:

如何使用PHP脚本重定向?
如何使用PHP脚本将用户从他们输入的URL重定向到其他网页/URL?

在PHP下,您需要使用header()发送原始HTTP标头。
使用" headers()"方法,您可以轻松地转移到新页面,而无需单击链接以继续。
这对于搜索引擎也很有用。
请记住,在发送任何实际输出之前,必须通过常规HTML标记,文件中的空白行或者从PHP调用header()。
使用include()或者require(),函数或者另一个文件访问函数读取代码,并在调用header()之前输出空格或者空行是一个非常常见的错误。
使用单个PHP/HTML文件时,存在相同的问题。

如何使用PHP重定向

您可以使用以下header(" Location:....)语法轻松地进行重定向:

<?php
/* Redirect browser */
header("Location: http://theitroad.com/");
 
/* Make sure that code below does not get executed when we redirect. */
exit;
?>

header()用于发送原始的HTTP/1.1规范特定的头。
必须在发送任何实际输出之前调用header(),以下示例将不起作用:

<?php
$var="something";
echo "Hello world";
echo $var;
/****************************************************
* Remember that header() must be called before any actual output is sent,
* either by normal HTML tags, blank lines in a file, or from PHP.
*****************************************************/
header("Location: http://theitroad.com/");
exit;
?>

PHP重定向与HTTP状态代码

在sitefunctions.php中创建一个名为movePage()的示例函数(请注意,我不是以下内容的作者,我在Internet上的其他地方找到了它):

function movePage($num,$url){
   static $http = array (
       100 -  "HTTP/1.1 100 Continue",
       101 -  "HTTP/1.1 101 Switching Protocols",
       200 -  "HTTP/1.1 200 OK",
       201 -  "HTTP/1.1 201 Created",
       202 -  "HTTP/1.1 202 Accepted",
       203 -  "HTTP/1.1 203 Non-Authoritative Information",
       204 -  "HTTP/1.1 204 No Content",
       205 -  "HTTP/1.1 205 Reset Content",
       206 -  "HTTP/1.1 206 Partial Content",
       300 -  "HTTP/1.1 300 Multiple Choices",
       301 -  "HTTP/1.1 301 Moved Permanently",
       302 -  "HTTP/1.1 302 Found",
       303 -  "HTTP/1.1 303 See Other",
       304 -  "HTTP/1.1 304 Not Modified",
       305 -  "HTTP/1.1 305 Use Proxy",
       307 -  "HTTP/1.1 307 Temporary Redirect",
       400 -  "HTTP/1.1 400 Bad Request",
       401 -  "HTTP/1.1 401 Unauthorized",
       402 -  "HTTP/1.1 402 Payment Required",
       403 -  "HTTP/1.1 403 Forbidden",
       404 -  "HTTP/1.1 404 Not Found",
       405 -  "HTTP/1.1 405 Method Not Allowed",
       406 -  "HTTP/1.1 406 Not Acceptable",
       407 -  "HTTP/1.1 407 Proxy Authentication Required",
       408 -  "HTTP/1.1 408 Request Time-out",
       409 -  "HTTP/1.1 409 Conflict",
       410 -  "HTTP/1.1 410 Gone",
       411 -  "HTTP/1.1 411 Length Required",
       412 -  "HTTP/1.1 412 Precondition Failed",
       413 -  "HTTP/1.1 413 Request Entity Too Large",
       414 -  "HTTP/1.1 414 Request-URI Too Large",
       415 -  "HTTP/1.1 415 Unsupported Media Type",
       416 -  "HTTP/1.1 416 Requested range not satisfiable",
       417 -  "HTTP/1.1 417 Expectation Failed",
       500 -  "HTTP/1.1 500 Internal Server Error",
       501 -  "HTTP/1.1 501 Not Implemented",
       502 -  "HTTP/1.1 502 Bad Gateway",
       503 -  "HTTP/1.1 503 Service Unavailable",
       504 -  "HTTP/1.1 504 Gateway Time-out"
   );
   header($http[$num]);
   header ("Location: $url");
}
}

首先包含sitefunctions.php,然后按如下所示调用movePage():

<?php
@include("/path/to/sitefunctions.php");
 
/* Move page with 301 http status code*/
movePage(301,"http://www.theitroad.local/");
?>

如何测试网址重定向?

如果您使用的是Apple OS X或者类似Linux/Unix的操作系统,请打开"终端"应用程序,然后执行curl命令,如下所示:

$ curl -I your-url-here
$ curl -I www.theitroad.local/tips/

输出示例:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 30 Dec 2013 22:31:37 GMT
Connection: keep-alive
Location: http://www.theitroad.local/
X-Galaxy: Andromeda-2

如果您在MS-Windows上或者不想使用命令行,请尝试使用redbot工具:
使用redbot工具检查HTTP位置url重定向