redirect到apache上的客户端子文件夹

我正在我的Web应用程序中托pipe几个小型客户端页面。 基本上,他们都是我写的Web应用程序的实例,为不同的客户端。 我正在用capistrano进行部署,所以每次部署新版本时,都会部署到客户端目录的“当前”子目录中。 因此,对于名为client-name的客户client-name ,它将部署到/var/www/deployments/client-name/current/ (实际上,这是发布的符号链接,但这不重要)。 我的web应用程序要求应用程序的“根”指向/main子目录。

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

我的根域是client.example.com 。 我想要做的是能够redirect一个请求types的浏览器,使http://client.example.com/client-name/something实际上指向http://client.example.com/client-name/current/main/something ,其中client-name是可变的(对于我来说,枚举太多了,尽pipe肯定less于100)。 理想情况下,这可以在不改变地址栏中的位置的情况下完成。

我觉得这是一个非常简单的Apache mod_rewrite使用,但我似乎无法find一个我正在寻找的例子。 我将不胜感激,如果有人可以帮我,因为mod_rewrite让我的头受伤。 ;)

在mod_alias中使用Redirect指令

{注释不够长,所以不得不用新的答案继续。}

您可以通过两种方式来完成:(1)使用完整的URL,从http:// …开始,通过告诉客户点击新的URL来处理redirect,或者(2)使用相对URL在处理redirect的时候会“保持”你的服务器:在你给出的例子中:后者被实现为:

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

而在前者你会实现为:

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

在任何一种情况下,基本链接(即index.php或者原始URL中的任何客户端types)的尾部斜杠之后的所有内容都将自动附加在指定的redirectpath中的结尾斜杠之后。 这就是redirect指令的吸引力 – 这真的很简单!

至于脚本,我不知道如何做到这一点编写一个脚本,生成一个.config文件。 我注意到,但是,mod_rewrite没有做任何事情,使这更容易,只有更难。

当我在这里,我应该提到,无论是mod_rewrite directovies或Redirect指令将更新客户端浏览器中的URL。

所以,我实际上能够得到这个工作与以下别名线:

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

我修改了这里给出的用户目录例子,想出我想要的。