如果您访问www.codinghorror.com,它会自动重定向到www.codinghorror.com/blog
如何重新指向"/ blog /"?
我正在使用Dreamhost共享主机,因此我配置服务器的选项有限.
小智 6
这将是一个很好的机会,可以自学HTTP状态代码.阅读HTTP 1.1规范的状态代码定义部分 ; 第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]
Run Code Online (Sandbox Code Playgroud)
如果在没有代码的情况下使用[R],则使用HTTP 302("暂时移动").
由于PHP也可以使用,这也是一个选项,尽管使用.htaccess的上述选项可能更快.您可以在/ home/midas/codinghorror /中放置一个名为index.php的文件,并使用上面Jeremy Ruten给出的代码.同样,您可以在header()的第三个参数中指定状态代码:
<?php
header('Location: http://www.codinghorror.com/blog', TRUE, 301);
?>
Run Code Online (Sandbox Code Playgroud)
否则,使用带有'Location'的PHP的header()函数默认发送HTTP 302状态响应.