url rewrite&重定向问题

时间:2010-05-11 00:31:57

标签: redirect rewrite

说我目前的网址是:

http://mydomain.com/showpost.php?p=123

现在我想让它变得更漂亮:

http://mydomain.com/123/post-title

我正在使用apache重写来抓取段'123'并将网址放回

http://mydomain.com/showpost.php?p=123

行。这是问题所在。我想将由Google编入索引的原始非漂亮网址重定向到漂亮的版本,我想要这个,因为我听说如果他看到多个网址指向相同的内容,谷歌可能会惩​​罚我。所以我需要

重定向/showpost.php?p=123到/ 123 / post-title

我必须在我的PHP代码中执行,因为Apache无法找出'post-title',但是如果我将重定向代码放在php代码中,那么它将是一个无限循环,例如as:

请求:/showpost.php?p = 123

重定向到:/ 123 / post-title

重写为:/showpost.php?p = 123

再次重定向到:/ 123 / post-title

...

等等。

抱歉,我应该首先解决Google问题,但我真的不知道如何用英语描述我的情况,以使Google获得合理的结果。

请帮帮我。感谢。

1 个答案:

答案 0 :(得分:2)

您可以在重写规则中设置请求变量,方法是在[E=rewritten:true]行的末尾添加RewriteRule之类的内容,以记录重写已完成的事实。在您的PHP中,您应该能够以$_SERVER['rewritten']访问它,并且仅在没有该标志时才进行重定向。

或者,您可以使用重写规则将非漂亮URL重定向到没有帖子标题的漂亮URL,然后使用应用程序代码发出添加了帖子标题的另一个重定向。当然,使用两个重定向是不太可取的,但它只是一个临时措施,直到搜索引擎更新它们的索引,然后你可以删除它。

请确保您使用301 Moved Permanently进行重定向,顺便说一句。