当HTTP资源或网页更改位置时,提供某些方法来提醒用户这些资源已移动通常很重要。 HTTP协议提供了通过与客户端应用通信的多个“重定向”状态码用于实现此目的而不影响用户体验。
Apache提供了许多“重定向”配置指令,允许管理员在配置文件中指定资源以重定向到另一个URL。 当请求被重定向时,服务器返回该请求的结果,该结果指示客户端发起针对目标资源的新位置的第二请求。
重定向可以告诉客户端所请求的页面已临时或永久移动。 Apache提供了轻松支持这些功能的工具。 本指南介绍了重定向配置指令,介绍如何设置各种重定向选项,以及如何将资源请求类重定向到新位置。
重定向配置指令可以位于“主”服务器配置文件中,但我们建议您将它们保留在虚拟主机条目或目录块中。 也可以在.httaccess文件中声明重定向语句。 以下是Redirect指令的示例:
Apache配置选项:
如果没有给出参数,则发送临时(例如302)重定向状态。 在这种情况下,客户端(用户代理)被通知在/username的可用资源已临时移动到http://team.example.com/~username/。
要指定特定的HTTP重定向状态,请指定以下状态之一:
此重定向告诉客户端资源已永久移动,这对应于HTTP状态301.“temp”状态是默认行为,指定重定向仅是临时的; 这对应于HTTP状态302.“另一个”状态发送表示所请求的资源已被另一个资源替换的信号(HTTP状态303)。 最后,“gone”状态告诉客户端资源已被删除(永久); 这发送HTTP状态410,作为不可用的“404”状态的替代。 在“已离开”重定向的情况下,请忽略最终到达网址。
您还可以指定特定的HTTP代码,如下所示。
Apache还提供了两个额外的永久和临时重定向指令,这些指令更清楚一些。 它们如下:
此外,Apache还可以使用RedirectMatch指令使用正则表达式重定向一类请求到新地址。 例如:
此指令与对具有.jpg扩展名的文件的任何请求进行匹配,并将其替换为第二个域上的位置。 因此:
http://www.example.com/avatar.jpg的请求将重定向到http://static.example.com/avatar.jpg和对http://www.example.com/images/avatar.jpg的请求将被重定向到http://static.example.com/images/avatar.jpg。