2017-04-18 41 views
0

基本上,堆栈溢出是如何实现的。如何在不知道输入URL的情况下重定向到正确的URL

所以,如果旧的网址是:/product-old-url_152,然后将其更改为/product-new-url_152,那么下面的URL都会重定向这里:

/product-old-url_152

/product-some-other-url_152

两个都会重定向到:

/product-new-url_152

什么是最好的做法 这个?

编辑152是数据库中的帖子的ID。要做到这一点

回答

2

方式一:

从请求的URL

if (preg_match('/product-(.*)_(\d+)$/', $_SERVER['REQUEST_URI'], $matches)) { 
    $old = $matches[1]; 
    $id = $matches[2]; 

提取ID查找新的URL数据库

$slug = fetch_slug_from_database($id); 

,并发送重定向到客户端,如果网址发生变化

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

并且请记住添加一个检查,表明您尚未加入新的URL,否则您将陷入循环。 – iainn

+0

@iainn感谢您的发现,修复。 –

+0

@OlafDietsche非常感谢。一定会看执行。 –

相关问题