htaccess redirect vs php redirect

时间:2010-11-04 08:33:51

标签: php seo

我决定将所有/dyanmic.php?UID=...页面更改为/static/Name-From-DB。 我已经读过,最好的方法是重定向,SEO明智,是实现301 .htacess重定向:

  

(http://www.tamingthebeast.net) - 正确的方式 - 一个htaccess 301   重定向:301重定向最多   高效和蜘蛛/访客友好   针对网站的策略   托管在运行Apache的服务器上。

但是,由于我需要使用重定向的数千个页面,因此在.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。

谢谢!

5 个答案:

答案 0 :(得分:10)

相同的标题将以相同的方式发送。因此,对于用户(或搜索引擎),它将没有任何不同,因此与.htaccess方式相比,PHP不会对您的页面排名产生负面影响。

每次访问页面时,PHP方式都会慢一点,数据库查询会被触发。如果网站没有太多流量进入这些网页,那么它应该不是问题。

在您的PHP页面中,首先进行数据库连接,因为如果该页面不存在,您将需要将它们重定向到另一个页面或传递404错误标题而不是301标题。

答案 1 :(得分:3)

  

我的问题是,这种方法是否会对我的网页排名产生负面影响,考虑到我上面引用的段落,重定向的最佳方式是通过.htaccess。

,它不会提供您在PHP文件中正确实现重定向!即,您应该在发出Name标头之前查找uid301(并且时发出此问题)找到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中)不再需要在数据库中查找在每一个“旧式”请求。

答案 2 :(得分:2)

没有。客户端在两种情况下都看到相同的东西:301重定向。唯一的区别可能是延迟,因为.htaccess是在php文件之前处理的,而sql查询可能会增加一些延迟,但我认为延迟微不足道。

答案 3 :(得分:1)

它不会影响您的分页 - 当您告诉他们您的网页已移动并且您不会将您的网站维护为重复内容时,Google会感激不尽。

但正如其他答案所述,标题与您从PHP或Apache发送标题相同 - 您的重点应该是如何最小化您的工作;无论是现在还是将来。

通过在.htaccess中手动键入重定向,您可以在比较需要时通过PHP动态添加标题时为自己提供更多工作。

答案 4 :(得分:0)

  

...进行重定向的最佳方法是通过.htaccess ...

如果你在共享服务器上,可能就是这种情况,但是,在参考一个很长或甚至很短的文件列表的情况下,你的页面中的每个文件访问都会搜索.htaccess文件 - 每个图形,每个包含文件等。

不仅如此,但是,如果您有几个级别,它会检查所有父目录中的.htaccess文件。因此,如果您的文件位于home / dir1 / dir2 / dir3中,它将检查每个目录中的.htaccess文件,并且每个文件都可以访问:
家用/ DIR1 / DIR2 / DIR3 /
家用/ DIR1 / DIR2 /
家用/ DIR1 /
家/

最好尽量保持光线。如果您不在共享服务器上,则根本不应使用.htaccess文件。在Directory下的主配置文件中输入任何指令,并将AllowOverride设置为&#34; none&#34;。