Php 如何使用.htaccess重定向到动态内容

Php 如何使用.htaccess重定向到动态内容,php,.htaccess,redirect,seo,Php,.htaccess,Redirect,Seo,现在我知道了如何编写SEO友好链接,我有一个问题:如果我要在URL中使用条目标题,那么如果我更新该标题,链接将被破坏 现在我看到这个网站是这样解决的:http://stackoverflow.com/questions/123456/any-title-name 他们将ID放在URL中,将标题放在另一个不相关的位置,因为如果任何用户更改该标题,服务器会将其重定向到原始标题。例如: 如果用户键入:http://stackoverflow.com/questions/123456/i-changed

现在我知道了如何编写SEO友好链接,我有一个问题:如果我要在URL中使用条目标题,那么如果我更新该标题,链接将被破坏

现在我看到这个网站是这样解决的:http://stackoverflow.com/questions/123456/any-title-name

他们将ID放在URL中,将标题放在另一个不相关的位置,因为如果任何用户更改该标题,服务器会将其重定向到原始标题。例如:

如果用户键入:http://stackoverflow.com/questions/123456/i-changed-that-name-lol 服务器重定向到:http://stackoverflow.com/questions/123456/any-title-name
问题是,您不能仅使用.htaccess正则表达式手动指定,因为您必须连接到数据库才能获取原始标题。如何实现重定向?

您是对的,这是不可能通过.htaccess实现的。有一种方法可以通过Apache建立数据库连接,但我认为不可能将其与url中的当前标题相匹配。这意味着它很可能是查询数据库并将重定向头发送回客户端的脚本

在php中,您可以使用。使用Apache和php,您将获得如下代码:

<?php
$matches = Array();
preg_match("/^\/questions/([0-9]+)\/([^\/]+)$/", $_SERVER['REQUEST_URI'], $matches);

$db = new Database();
$seo_title = $db->getTitleById( $matches[1] );
if( $seo_title != $matches[2] ) {
  header( "Location: /questions/{$matches[1]}/{$seo_title}", TRUE, 301 );
  exit();
} else {
  display_the_page();
}

很可能是通过页面本身完成的。在db中查找id->匹配url参数->如果不重定向->否则显示内容?可能重复