PHP 301重定向多个URL

时间:2014-09-02 13:59:45

标签: php redirect http-status-code-301

我正在尝试使用php 301重定向移动多个动态URL,而不是htaccess。

我无法弄清楚如何把它放在一起虽然因为我有点超出我的深度,但到目前为止这都是。

<?php 
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: http://www.new-website/new-folder/ $url="http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
$url=str_replace('http://www.website.com/old-folder/','',$url);
echo $url; "); 
?>

旧网址:http://www.website.com/old-folder/news-article/full.php?= 任何

新网址:http://www.new-website.com/new-folder/news-article/full.php?= 任何内容

我想将当前网址的第二个/之后的任何内容插入标题位置

/ old-folder /之后的任何内容每次都会有所不同。

简单来说,我试图这样做:

<?php 
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: http://www.new-website/new-folder/ *insert end of URL from current address bar here* "); 
?>

3 个答案:

答案 0 :(得分:1)

您正在标题函数中设置变量,然后尝试调用其中的函数。标题(带位置)也应该被赋予一个重定向的位置。

第二个标题调用将替换第一个标题调用,因此您只能使用其中一个:

$url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
$url = str_replace('http://www.website.com/old-folder/','',$url);

header("Location: http://www.new-website/new-folder/$url"); 

OR

header("Status: 301 Moved Permanently");

答案 1 :(得分:1)

$url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
$url = str_replace('http://www.website.com/old-folder/','',$url);

希望你现在有类似的东西:news-article/full.php?=anything

您现在可以:

header("HTTP/1.1 301 Moved Permanently"); 
header("Location: http://www.new-website/new-folder/".$url); 

但是,正如已经建议的那样,最好用Htaccess代替php。

答案 2 :(得分:0)

您尝试使用php的最佳方式。只需创建一个临时变量。使用windows.location.href编写自己的JavaScript重定向。将这些脚本分配给该临时变量并回显它。

让我们试着帮助你。