Php 如何在不知道输入URL的情况下重定向到正确的URL

Php 如何在不知道输入URL的情况下重定向到正确的URL,php,.htaccess,redirect,Php,.htaccess,Redirect,基本上,堆栈溢出是如何实现的 因此,如果旧URL为:/product-old-URL_152,然后更改为/product-new-URL_152,则以下URL将全部重定向到此处: /product-old-url\u 152 /product-some-other-url\u 152 两者都将重定向到: /product-new-url\u 152 最好的方法是什么 编辑:152是数据库中帖子的ID。一种方法: 从请求的URL提取id if (preg_match('/product-(.*)_

基本上,堆栈溢出是如何实现的

因此,如果旧URL为:
/product-old-URL_152
,然后更改为
/product-new-URL_152
,则以下URL将全部重定向到此处:

/product-old-url\u 152

/product-some-other-url\u 152

两者都将重定向到:

/product-new-url\u 152

最好的方法是什么

编辑
152
是数据库中帖子的ID。

一种方法:

从请求的URL提取id

if (preg_match('/product-(.*)_(\d+)$/', $_SERVER['REQUEST_URI'], $matches)) {
    $old = $matches[1];
    $id = $matches[2];
在数据库中查找新URL

    $slug = fetch_slug_from_database($id);
如果URL更改,则向客户端发送重定向

    if ($slug !== $old) {
        header("Location: /product-$slug-$id");
        exit;
    }
}
一种方法是:

从请求的URL提取id

if (preg_match('/product-(.*)_(\d+)$/', $_SERVER['REQUEST_URI'], $matches)) {
    $old = $matches[1];
    $id = $matches[2];
在数据库中查找新URL

    $slug = fetch_slug_from_database($id);
如果URL更改,则向客户端发送重定向

    if ($slug !== $old) {
        header("Location: /product-$slug-$id");
        exit;
    }
}

请记住添加一个检查,确保您尚未在新的URL上,否则您将陷入循环。@iainn感谢您的发现,已修复。@OlafDietsche感谢您的帮助。一定会考虑实现。记住添加一个检查,确保您尚未在新的URL上,否则您将陷入循环中。@iainn感谢您的发现,已修复。@OlafDietsche感谢您的帮助。我们一定会考虑实施。