2011-02-03 110 views
1

几个小时前我几乎在工作,但我似乎无法让所有的mod重写的东西适用于Zend。如何使用mod重写指向子域的子目录?

鉴于此目录结构:

/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的旧alpha版本使用/www/errors.php的引导,而不是/public/index.php,(也许甚至需要一些不同于当前版本的重写规则),但我修改了上面的代码以适应当前的ZF设置)

+0

此解决方案是否有** **到是mod_rewrite?你有权访问Apache配置吗?你可以使用[Apache虚拟主机](http://httpd.apache.org/docs/2.2/vhosts/)? – Leigh 2011-02-03 22:08:45

+0

@Leigh:虚拟主机听起来像是正确的想法,但是你知道它是否可以处理通配符分支名称? (我不是说这里的路由方面。) – 2011-02-03 22:21:37

回答

1

您配置了通配符子域(用于路由目的)吗?除非你这么做,否则它将无法工作。

我也觉得这条​​线将不起作用:

RewriteCond /home/branches/%1/public 

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

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