没有htaccess的永久重定向到可读的SEO URL

时间:2013-10-20 20:52:58

标签: .htaccess redirect duplicates

我即将将部分网址从details.html?id=1234更改为details/1234_really_interesting_stuff。 ID 1234将用于标识内容,really_interesting_stuff只是为了使URL更具可读性。

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

据我所知,唯一一个谷歌友好的301重定向是一个htaccess文件。但是无法从htaccess文件中的数据库中检索信息。我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

  

据我所知,唯一一个google友好的301重定向是一个htaccess文件。

这是不正确的,谷歌没有办法说明你是如何做你的301s的。

您可以动态执行重定向。 Ex(在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代码段的原因描述为here

答案 1 :(得分: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中附加标题。