如何使用php检测301重定向

时间:2012-12-08 19:47:23

标签: php .htaccess seo http-status-code-301

  

可能重复:
  How to identify if referrer is a 301 redirect

使用htaccess我正在进行301重定向以将旧网址重定向到新网址,问题是网址包含存储在数据库中的ID。但是我有一个带有新ID的新数据库,所以现在当旧URL重定向到新URL时,页面上会加载不同的记录。所以我所做的就是将旧的ID与新的ID一起存储,以便我知道旧的id属于新的id。但是,我怎么能检测到有人试图访问旧网址?有没有办法在PHP中检测到来到页面的人正在通过301重定向?由于SEO的原因,我不想在网址中添加任何新内容,所以我真的需要知道我是否可以通过301重定向来检测他们是否来到此页面。希望这是有道理的。

4 个答案:

答案 0 :(得分:2)

将另一个参数添加到重定向,例如redirect=true,检查参数以让您的应用知道它是重定向,启动会话,然后再次重定向到最终的未更改的网址,比较会话以了解,用户来自重定向的网址。

或者做Salman所说的,使用规范网址。

答案 1 :(得分:0)

脚本不会知道某些内容已被重定向到它。不是重定向到,而是index.php?id=12345添加一个中间重定向,您可以在其中确定正确的URL。

首先,使用临时变量名称重定向.htaccess,例如index.php?oldid=12345然后在该脚本中执行:

if (isset($_POST['oldid'])) {
    $id = fetch_new_id();
    header("Location: index.php?id=$id");
}

答案 2 :(得分:0)

我认为您无法检测已设置的http状态,但使用.htaccess可以将其他变量添加到重定向的网址或将ID重命名为其他变量名称。

答案 3 :(得分:0)

为什么不通过php处理所有旧的URL加上重写并使代码直接301重定向到带有新id的新URL?