重定向到 apache 上的客户端子文件夹

重定向到 apache 上的客户端子文件夹

我在我的 Web 应用程序中托管了一些小型客户端页面。基本上,它们都是我为不同客户端编写的 Web 应用程序的实例。我正在使用 Capistrano 进行部署,因此每次部署新版本时,它实际上都会部署到客户端目录中名为“current”的子目录中。因此,对于名为的客户端client-name,它会部署到/var/www/deployments/client-name/current/(实际上,这是一个指向版本的符号链接,但这并不重要)。我的 Web 应用程序要求应用程序的“根”指向子目录/main

基本上,我的问题是这样的:

我的根域名是client.example.com。我想要做的是能够重定向输入到浏览器中的请求,使得http://client.example.com/client-name/something实际指向http://client.example.com/client-name/current/main/something,其中client-name是变量(变量太多了,我无法一一列举,但肯定少于 100 个)。理想情况下,这可以在不更改地址栏中的位置的情况下完成。

我觉得这是 Apache 的一个非常简单的用法mod_rewrite,但我似乎找不到一个可以满足我要求的示例。如果有人能帮助我,我将不胜感激,因为这mod_rewrite让我头疼。;)

答案1

使用重定向mod_alias 中的指令

答案2

{评论不够长,无法附加,因此必须采用新的答案才能继续。}

您可以通过两种方式执行此操作:(1)使用完整 URL,以 http://... 开头,它将通过告诉客户端点击新 URL 来处理重定向,或(2)使用相对 URL,它将在处理重定向时“停留在”您的服务器上:在您给出的示例中:后者实现为:

 Redirect permanent "/iamaclient/" "/iamaclient/current/main/"

而在前者中你可以这样实现:

 Redirect permanent "/iamaclient/" "http://www.example.com/iamaclient/current/main/"

无论是哪种情况,基本链接(即 index.php 或客户端在原始 URL 中输入的任何内容)尾部斜杠后面的所有内容都将自动附加到指定重定向路径的尾部斜杠后面。这就是 Redirect 指令的吸引力所在 - 它真的就是这么简单!

至于脚本,我不知道除了编写一个生成 .config 文件的脚本外如何做到这一点。不过,我注意到 mod_rewrite 并没有使这变得更容易,只会更难。

在此过程中,我应该提到,mod_rewrite 指令或 Redirect 指令都会更新客户端浏览器中的 URL。

答案3

因此,我实际上能够使用以下别名行来实现这一点:

AliasMatch "^/([a-zA-Z0-9]+)(/(.*))?$"   "/var/www/deployments/$1/current/main/$3"

我修改了给出的用户目录示例这里得到我想要的东西。

相关内容