Php 如何在不知道输入URL的情况下重定向到正确的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-(.*)_
/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感谢您的帮助。我们一定会考虑实施。