现在我知道如何编写SEO友好链接,我遇到了这个问题:如果我要在URL中使用条目标题,那么如果我更新该标题,链接将会被破坏。 / p>
现在我看到这个网站以这种方式解决了它: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 正则表达式手动指定此项,因为您必须连接到数据库才能获取原始标题。如何重定向?
答案 0 :(得分:0)
你是对的,这是不可能通过.htaccess做的。有一种方法可以通过Apache建立数据库连接,但我认为不可能将其与网址中的当前标题进行匹配。这意味着它很可能是查询数据库的脚本,并将重定向标头发送回客户端。
在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();
}