【问题标题】:Redirect incorrect SEO URLs to the correct ones将不正确的 SEO URL 重定向到正确的 URL
【发布时间】:2011-10-24 05:24:04
【问题描述】:

我目前使用以下规则从标准 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 具有正确的 ID 但匹配的标题错误,它会自动将您重定向到正确的 URL。

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

【问题讨论】:

  • 将脚本调用放入您的index.php 文件中,该文件首先根据值检查索引并使用header()die() 进行更正。如果在运行任何其他内容之前任何其他内容运行之前运行,这将几乎没有开销。

标签: php redirect seo


【解决方案1】:

PHP 就是这样进行重定向的方法。

基本思路很简单:

  • 如上图所示,使用 ID 和标题部分调用 PHP 脚本

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

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

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

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

【讨论】:

  • 最好的方法是优化对数字 id 的初始查询查找,但前提是它证明非常缓慢。
  • @Jared 是的,很公平,如果性能是一个问题,这是一个好主意 - 但可以说,这种情况应该很少发生,因此非优化方法可能没问题。
  • 我实际上同意 this 的答案,但您已经编辑了我正在回复的声明。我想你的意思是.htaccess 不能明确地做到这一点,对吧? (我最初也认为 OP 在问这个问题。)
  • @Jared 啊,我明白了!是的,PHP 是做到这一点的唯一方法。这超出了 .htaccess 的能力。我就是这么说的
猜你喜欢
  • 1970-01-01
  • 2016-05-05
  • 2017-11-24
  • 2012-09-27
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
相关资源
最近更新 更多