【问题标题】:How to redirect to dynamic content with .htaccess如何使用 .htaccess 重定向到动态内容
【发布时间】:2014-08-19 20:31:43
【问题描述】:

现在我知道如何编写 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 正则表达式手动指定它,因为您必须连接到数据库才能获得原始标题。这个重定向是怎么做的?

【问题讨论】:

标签: php .htaccess redirect seo


【解决方案1】:

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

在 php 中你可以使用header(...) function。使用 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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    相关资源
    最近更新 更多