我已经决定将我所有的/dyanmic.php?UID=...页面更改为/static/Name-From-DB。我读到过,最好的重定向方法,SEO,是实现301个.htacess重定向:
(http://www.tamingthebeast.net)- -正确的方法-- htaccess 301重定向:对于托管在运行Apache的服务器上的网站,301重定向是最有效和对蜘蛛/访问者最友好的策略。
但是,由于我有数千个页面需要使用重定向,因此在.htacess文件中包含数千个条目似乎效率很低:
redirect 301 /dynamid.php?UID=1 http://www.domain.com/static/Name-From-DB
redirect 301 /dynamid.php?UID=2 http://www.domain.com/static/Another-Name-From-DB
and so on...因此,这样做的有效方法似乎是通过PHP页面,根据UID将头设置为301重定向:
<?
Header( "HTTP/1.1 301 Moved Permanently" );
// Getting the page static name from the DB according to the UID
$result = mysql_query('SELECT Name FROM DB WHERE UID='$_GET["uid"]'');
$row=mysql_fetch_assoc($result);
// Redirect to the new page
Header( "Location: http://www.domain.com/static/" . $row[0] );
?> 我的问题是这种方法是否会对我的页面排名产生负面影响,考虑到我上面引用的段落,最好的重定向方法是通过.htaccess。
谢谢!
发布于 2010-11-04 08:38:30
无论用哪种方式,都会以相同的方式发送相同的标题。因此,对于用户(或者搜索引擎)来说,这并没有什么不同,所以与.htaccess方式相比,PHP不会对页面排名产生负面影响。
PHP的方式会慢一点,因为每次访问页面时都会触发数据库查询。如果该网站没有太多的流量到这些网页,但这不应该是一个问题。
在PHP页面中,首先进行数据库连接,因为如果页面不存在,您将希望将它们重定向到另一个页面,或者传递404错误标头,而不是301头。
发布于 2010-11-04 08:40:20
我的问题是这种方法是否会对我的页面排名产生负面影响,考虑到我上面引用的段落,最好的重定向方法是通过.htaccess。
No,如果您在PHP中正确地实现重定向,它将不会!也就是说,您可能应该在发出Name头之前(通过uid)查找301 (并且只在找到Name时才发出--否则是404)。
另外,为什么不对数据库运行一个查询,以.htaccess格式输出重定向并将其直接写入.htaccess文件?这样,您就必须只做一次,而不必关心不存在的uid。
编辑-伪码
str ← ""
for each (uid, Name) in database:
line ← concat("Redirect 301 /dynamid.php?UID=", uid, "http://www.domain.com/static/", Name, <newline>)
append line to str
copy or write str to .htaccess这样,您仍然可以在一年内找到重定向(它们都在.htaccess中),并且不再需要对每个“旧样式”请求在数据库中进行查找。
发布于 2010-11-04 08:39:03
不是的。客户端在这两种情况下都会看到相同的情况: 301重定向。唯一的区别可能是延迟,因为.htaccess是在php文件之前处理的,而sql查询可能会添加一些延迟,但我认为延迟并不明显。
https://stackoverflow.com/questions/4094932
复制相似问题