如何使用mod重写指向给定子域的子目录?

时间:2011-02-03 22:02:32

标签: php apache zend-framework mod-rewrite

我几个小时前就已经开始工作了,但是我似乎无法让所有的mod重写内容适合Zend。

鉴于此目录结构:

/home/branches/branch1/public/index.php
/home/branches/branch2/public/index.php
/home/branches/branch3/public/index.php

我如何才能这样访问:

branch1.branch.example.com
branch2.branch.example.com
branch3.branch.example.com

无需在每个分支中进行硬编码?

这是我的起点(source),(我现在甚至无法让它工作,但我发誓今天早上工作了,哈哈!)。

ServerAlias *.branch.example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} .* [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.branch\.example\.com
RewriteCond /home/branches/%1/public
RewriteRule ^(.*) /%1/$1 [L]

(旁注:我实际上正在使用一个巨大的代码库,使用旧版的ZF,它使用/www/errors.php作为引导而不是/public/index.php,(甚至可能需要一些不同的重写)规则比当前版本)但我修改了上面的代码以适应当前的ZF设置)

1 个答案:

答案 0 :(得分:1)

您是否配置了通配符子域(用于路由目的)?除非你这样做,否则它将不起作用。

我也认为这条线不起作用:

RewriteCond /home/branches/%1/public

我认为你的最后一行必须是这样的:

RewriteRule ^(.*)$ /home/branches/%1/public/$1 [L]