你如何实现简单的网站重定向?

时间:2009-03-29 07:48:48

标签: http redirect dreamhost

如果您转到www.codinghorror.com,它会自动重定向到www.codinghorror.com/blog

如何重定向到“/ blog /”?

我正在使用Dreamhost Shared Hosting,因此我配置服务器的选项有限。

4 个答案:

答案 0 :(得分:6)

这是一个很好的机会,可以自学HTTP状态代码。阅读HTTP 1.1规范的status code definitions section;第10.3节“重定向3xx”包含与您的问题相关的状态代码。了解HTTP 3xx代码意味着您可以发送具有您想要的语义的响应。例如,如果您打算将重定向发送到始终,则可以使用HTTP 301,“永久移动”。从理论上讲,客户端可以使用HTTP 301响应作为信号来存储新的URL值来代替旧的URL值。

您在Dreamhost上的配置选项并不像您想象的那样受限,因为您可以在隐藏的 .htaccess 文件中指定许多Apache Web服务器配置指令。该文件应放在Web文档目录中;使用您的示例,您可以将它放在根Web文档目录 / home / midas / codinghorror / 中,但.htaccess文件可以放在Apache提供的任何目录中。 (请记住在文件名中包含前导点。)其内容可以是mod_alias示例,也可以是已经提到的mod_rewrite示例。

请注意,mod_alias的RedirectPermanent指令将为您发送HTTP 301状态代码。如果您想使用mod_rewrite执行此操作,则可以指定状态代码:

RewriteEngine on
RewriteRule ^$ /blog/ [R=301]

如果在没有代码的情况下使用[R],则使用HTTP 302(“暂时移动”)。

由于PHP也可供您使用,这也是一种选择,尽管使用.htaccess的上述选项可能更快。您可以在 / home / midas / codinghorror / 中放置一个名为index.php的文件,并使用上面的Jeremy Ruten给出的代码。同样,您可以在header()的第三个参数中指定状态代码:

<?php
header('Location: http://www.codinghorror.com/blog', TRUE, 301);
?>

否则,使用带有'Location'的PHP的header()函数默认发送HTTP 302状态响应。

答案 1 :(得分:3)

另一种选择是使用Apache的mod_alias进行永久重定向(在.htaccess或httpd.conf中):

RedirectPermanent / /blog

服务器和编程语言可能有很多种方式(可能甚至更多)。如果您告诉我们您使用的具体技术,它可能有助于为您提供更具体的答案。

答案 2 :(得分:2)

假设Apache使用mod_rewrite和允许其使用的上下文权限,则将其置于虚拟主机配置或.htaccess中:

RewriteEngine on
RewriteRule ^$ /blog/

答案 3 :(得分:2)

一种方法是向客户端发送“位置”标头。这是一个PHP示例:

<?php

header('Location: http://www.codinghorror.com/blog');

?>