【问题标题】:How to get a variable from url and 301 redirect with php?如何从 url 获取变量并使用 php 进行 301 重定向?
【发布时间】:2018-02-25 16:47:50
【问题描述】:

我想从 url 中获取一个变量,并将访问者 301 重定向到新域,并将该变量包含在 php 中的新 url 中。

例如,访问者来到我的网站 http://example.com/?id=abc 在那个网站上我有一个 index.php 文件,上面有这种代码:

<?php 
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: http://www.New-Website.com/?id=$_GET["id"]"); 
?>

我想 301 将访问者重定向到具有相同变量的新网站。

此代码给我错误 500。

我知道这可以在 .htaccess 中完成,但我需要在 php 中完成。

【问题讨论】:

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


    【解决方案1】:

    不能在双引号字符串中使用双引号

    所以将$_GET["id"]修改为

    header("Location: http://www.New-Website.com/?id=$_GET[id]"); 
    

    或者

    header("Location: http://www.New-Website.com/?id={$_GET['id']}"); 
    

    【讨论】:

      【解决方案2】:

      如果您使用的是 apache,只需在旧域的根目录中添加一个 .htaccess 文件,内容如下:

      RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
      RewriteRule ^(.*)$ http://www.New-Website.com/$1 [R=301,L]
      

      所有对旧域的请求都将被重定向到新域

      参见示例here

      【讨论】:

        【解决方案3】:

        第二行出错。双引号不会转义。建议取出该位置并使用连接。 更好的是,并指定数据类型

        <?php 
         header("HTTP/1.1 301 Moved Permanently"); 
         header("Location: New-Website.com/?id=".(int)$_GET["id"]);
        

        【讨论】:

        • OP 为什么要试试这个好的答案将始终解释所做的事情以及这样做的原因,不仅适用于 OP,而且适用于可能会发现此问题并正在阅读您的答案的 SO 的未来访问者。跨度>
        • 对不起。第二行出错。双引号不会转义。建议取出该位置并使用连接。更好的是,并指定数据头的类型("Location:New-Website.com/?id=".(int)$_GET["id"]);
        【解决方案4】:
        <?php
        header("Status: 301 Moved Permanently");
        header("Location:http://www.New-Website.com/?". $_SERVER['QUERY_STRING']);
        exit;?>
        

        【讨论】:

        • 这个答案没有解决问题中的实际问题(它只是一个语法错误)并且不包含对代码的任何解释,这使得它不是那么有用。
        猜你喜欢
        • 2016-05-30
        • 2020-02-14
        • 2014-05-27
        • 1970-01-01
        • 1970-01-01
        • 2012-10-27
        • 1970-01-01
        • 2013-04-09
        • 1970-01-01
        相关资源
        最近更新 更多