在StackOverflow中重定向301。它是如何工作的?

时间:2013-11-30 22:10:35

标签: .htaccess mod-rewrite url-rewriting seo http-status-code-301

让我们来看看这个问题的网址

http://stackoverflow.com/questions/20306229/301-redirect-in-stackoverflow-how-does-it-works

如果我在网址的最后部分更改某些内容,请将其设为

http://stackoverflow.com/questions/20306229/301-r

我收到301消息,并且我被重定向到我写的第一个URL。

这是真正的SEO友好,恕我直言。问题是:他们是怎么做到的?是否有可能通过.htaccess实现它,还是有另一种方法可以实现它?在这种情况下哪种方式?

我不是真正的专家,但看起来无法通过htaccess达成......它看起来更像是

  1. 我从网址
  2. 获取了帖子ID
  3. 我检查数据库以查看标题是否相等
  4. 如果不是,我会重写网址并发送301回复

1 个答案:

答案 0 :(得分:2)

我假设他们通过检查数据库中seo-title的页面来路由请求。

RewriteRule ^questions/([0-9]+)/?$ routepage.php?id=$1 [R=301,L]
RewriteRule ^questions/([0-9]+)/(.*)/?$ routepage.php?id=$1&title=$2 [R=301,L]

文件routepage.php

$page = getSeoTitleFromDatabase( $_GET['id'] );
if( $page != $_GET['page'] ) {
  header( "HTTP/1.1 301 Moved Permanently" );
  header( "Locations: /questions/" . $_GET['id'] . "/" . $page );
}
//Do whatever...

我不知道使用.htaccessmod_rewrite检查数据库的方法。