是否可以使用界面页面进行搜索引擎友好重定向?

时间:2011-06-12 11:12:23

标签: php apache mod-rewrite redirect seo

我想将页面重定向到:http://www.mysite.com/index.php?id=1http://www.mysite.com/the-real-name.htm但我在第一个网址中没有实名,那么我应该从db获取它。

我创建了一个界面页面,然后我将页面http://www.mysite.com/index.php?id=1重定向到它,我从db中获取了实名(在url中使用id参数),然后使用PHP Header函数将页面重定向到http://www.mysite.com/the-real-name.htm

此流程搜索引擎是否友好?

哪个网页将使用搜索引擎抓取工具编入索引?界面页面或http://www.mysite.com/the-real-name.htm

哪种索引是http://www.mysite.com/the-real-name.htm的最佳解决方案?

非常感谢

3 个答案:

答案 0 :(得分:2)

如果您想告诉搜索引擎最终的网址是“网址”,您需要执行永久重定向。 HTTP状态代码为301

header('Location: http://www.mysite.com/the-real-name.htm', true, 301);

对于第一次重定向,您需要执行临时重定向。 HTTP状态代码为302

header('Location: http://www.mysite.com/index.php?id=1', true, 302);

请记住,不仅要为重定向发送标头,而且还要发送新的位置所在的人类可读信息的HTTP / HTML BODY,这是一种很好的做法。预计重定向不会由客户自动执行。

实施的不同方式

根据您使用的系统,使用PHP设置HTTP状态标头可能会有所不同。上面的代码适用于正常运行的PHP版本。坚持最新。但是,如果你不能和服务器集成中断,你可能会稍微推动一下限制并强行推进:

# Manually sending the HTTP 1/1 status line header - PHP does this nowadays, so normally not needed. But if you need it, ensure it's the first header you send.
header ('HTTP/1.1 301 Moved Permanently'); 
# Same here, but some CGI/FCGI+PHP implementations require you to set the Status header as well manually. Normally not needed.
header ('Status: 301'); 
# Set the Location header and status: (you will always need this)
header ('Location: http://www.mysite.com/the-real-name.htm', true, 301); 

请务必使用能够显示不自动执行重定向的响应标头的工具(例如curl)来检查脚本是否发送了正确的标头:

$ curl -i "http://www.mysite.com/index.php?id=1"

否则,等待谷歌反映更改只需要你知道你犯了一些错误需要一点时间。

答案 1 :(得分:1)

当重定向时也设置301标题,搜索引擎将知道从那里开始的内容。

header ('HTTP/1.1 301 Moved Permanently');
header ('Location: '.$location);

答案 2 :(得分:1)

如果关系无法更改,请使用永久重定向as hakre suggested(301状态代码)。否则,如果相同的id值可能指向将来的其他位置,请使用临时重定向。

在任何一种情况下,如果规范(官方,主要,主要)网址为“http://www.mysite.com/the-real-name.htm”,您可以告诉搜索引擎在页面的head部分中使用canonical meta tag

<link rel="canonical" href="http://www.mysite.com/the-real-name.htm" />