0

我即将将我的一些 URL 从更改details.html?id=1234details/1234_really_interesting_stuff. ID 1234 将用于识别内容,really_interesting_stuff只是为了使 URL 更具可读性。

在下一步中,我将使用存储在数据库中details.html?id=1234的新 URL替换我网站上引用的所有链接。really_interesting_stuff我现在面临的问题:如何进行谷歌友好的 301 重定向,这样我就不会有重复的内容(因为谷歌现在仍然会details.html?id=1234在其他网页上传播旧链接)。我将不得不转发到details/1234_really_interesting_stuff。不幸的是,字符串只保存在数据库中。

据我所知,唯一对谷歌友好的 301 重定向是 htaccess 文件。但是没有办法从 htaccess 文件中的数据库中检索信息。我该如何解决这个问题?

4

2 回答 2

1

据我所知,唯一对谷歌友好的 301 重定向是 htaccess 文件。

这是不正确的,谷歌无论如何也无法预测你是如何做你的 301 的。

您可以动态进行重定向。例如(在 PHP 中):

header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.yourwebsite.tld/details/1234_really_interesting_stuff");
echo "<html><body>The page has moved <a href="http://www.yourwebsite.tld/details/1234_really_interesting_stuff">here.</a></body></html>" ;

此处描述了 HTML 片段的原因。

于 2013-10-20T21:59:47.200 回答
0

这是你需要在你的DOCUMENT_ROOT/.htaccess

RewriteEngine On

# external redirect from actual URL to pretty one with 302
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+details\.html\?id=([^\s&]+) [NC]
#RewriteRule ^ /details/%1? [R=302,L]

# internal forward from pretty URL to actual one
RewriteRule ^details/([^/.]+)/?$ /details.html?id=$1 [L,QSA,NC]

然后在里面details.html你可以检查是否提供了标题$_GET['id'],如果没有,则查询数据库并使用header函数在 URL 中附加标题。

于 2013-10-21T04:02:59.290 回答