Php 将不正确的SEO URL重定向到正确的URL

Php 将不正确的SEO URL重定向到正确的URL,php,redirect,seo,Php,Redirect,Seo,我目前使用以下规则从标准URL重定向到SEO URL: RewriteRule ^books/v/([0-9]+)/(.*)/page([0-9]+) books.php?type=book&id=$1&title=$2&page=$3 [L] RewriteRule ^books/c/([0-9]+)/(.*)/page([0-9]+) books.php?type=category&id=$1&title=$2&page=$3 [L] Rewr

我目前使用以下规则从标准URL重定向到SEO URL:

RewriteRule ^books/v/([0-9]+)/(.*)/page([0-9]+) books.php?type=book&id=$1&title=$2&page=$3 [L]
RewriteRule ^books/c/([0-9]+)/(.*)/page([0-9]+) books.php?type=category&id=$1&title=$2&page=$3 [L]
RewriteRule ^books/v/([0-9]+)/(.*) books.php?type=book&id=$1&title=$2 [L]
RewriteRule ^books/c/([0-9]+)/(.*) books.php?type=category&id=$1&title=$2 [L]
RewriteRule ^books books.php [L]`
现在,我想做的是自动将带有正确ID和错误标题的URL重定向到正确的URL

Stackoverflow做了类似的事情-如果您输入了一个问题的URL,该URL的ID正确,但标题匹配错误,它会自动将您重定向到正确的URL


我想应该用PHP完成,但我真的不知道做重定向的最佳方法是什么。

PHP是这样做重定向的方法

基本思想很简单:

  • 使用上面显示的ID和标题部分调用PHP脚本

  • 在PHP脚本中,从数据库加载ID为的记录

  • 匹配数据库中记录的标题和URL中的标题

  • 如果它们不匹配,请使用ID和数据库中的标题将标题重定向到正确的URL:

    header("Location: /books/v/123456");
    die();
    

将脚本调用放入
index.php
文件,该文件首先根据值检查索引,并使用
头()和
骰子()进行更正。如果在运行任何其他内容之前运行,则开销很小。最好的方法是优化数字id上的初始查询查找,但前提是它被证明是无限慢的。@Jared是的,很公平,如果性能是一个问题,这是一个好主意-但可以说,这种情况应该很少发生,所以非优化的方法可能是可以的。我实际上同意这个答案,但你删掉了我回应的陈述。我想你的意思是,
.htaccess
不能明确地执行它,对吗?(一开始我还以为OP在问这个问题。)@Jared啊,我明白了!是的,PHP是实现这一点的唯一方法。这超出了.htaccess的功能。我就是这么说的