网站搜索

在 Apache 中将网站 URL 从一台服务器重定向到另一台服务器


正如我们在前两篇文章(使用 mod_rewrite 执行内部重定向和基于浏览器显示自定义内容)中所承诺的那样,在这篇文章中,我们将解释如何使用 Apache 执行重定向到已从一台服务器移动到另一台服务器的资源mod_rewrite 模块。

假设您正在重新设计公司的 Intranet 站点。您决定将内容和样式(HTML 文件JavaScriptCSS)存储在一台服务器上,并将文档存储在另一台服务器上 - 也许是更坚固的一个。

建议阅读: 提升 Apache Web 服务器性能的 5 个技巧

但是,您希望此更改对用户透明,以便他们仍然能够通过常用 URL 访问文档。

在以下示例中,名为 assets.pdf 的文件已从 192.168.0.100 中的 /var/www/html 移动(主机名:web)到 192.168.0.101 中的同一位置(主机名:web2)。

为了让用户在浏览 192.168.0.100/assets.pdf 时能够访问此文件,请在 192.168.0.100 上打开 Apache 的配置文件并添加以下重写规则(或您还可以将以下规则添加到您的 .htaccess 文件中):

RewriteRule "^(/assets\.pdf$)" "http://192.168.0.101$1"  [R,L]

其中 $1 是与括号内的正则表达式匹配的任何内容的占位符。

现在保存更改,不要忘记重新启动 Apache,让我们看看当我们尝试通过浏览 192.168.0.100/assets.pdf 来访问 assets.pdf 时会发生什么:

建议阅读: 25 个有用的“.htaccess”网站技巧

在下面的内容中,我们可以看到在 192.168.0.100 上对 assets.pdf 发出的请求实际上是由 192.168.0.101 处理的。

tail -n 1 /var/log/apache2/access.log

在本文中,我们讨论了如何对已移动到不同服务器的资源执行重定向。最后,我强烈建议您查看 mod_rewrite 指南和 Apache 重定向指南以供将来参考。

与往常一样,如果您对本文有任何疑问,请随时使用下面的评论表。我们期待您的回音!