将多个域指向不同的文件夹

时间:2011-03-19 07:27:00

标签: zend-framework mod-rewrite

我试过了极限。 Mod_rewrite一直是个噩梦。我的最后一次尝试是下面的代码,即使在www.water.com工作,我也无法让www.wind.com做同样的事情。 在mod_rewrite日志中,我得到的是www.wind.com(HTTP_HOST),一直与www.water.com进行比较。重写永远不会到达第二组线。有人可能知道如何实现这一目标吗?

RewriteEngine On
----------------------------------------------------------
RewriteCond %{HTTP_HOST} (www\.)?water\.com [NC]
RewriteCond %{REQUEST_URI} !^/zend/application/Water/ [NC]

# Excludes the redirection for files that physically exist ( -s); symbolic links ( -); and existing directories (-d).
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /water.php [NC,L]
----------------------------------------------------------
RewriteCond %{HTTP_HOST} (www\.)?wind\.com [NC]
RewriteCond %{REQUEST_URI} !^/zend/application/Wind/ [NC]

# Excludes the redirection for files that physically exist ( -s); symbolic links ( -); and existing directories (-d).
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /wind.php [NC,L]
----------------------------------------------------------

2 个答案:

答案 0 :(得分:2)

对于水组,在RewriteConds序列之后有两个RewriteRules。第一个RewriteRule是根据RewriteConds的结果有条件地应用的。

但第二个RewriteRule不会应用于所有剩余请求,甚至是对域wind.com的请求吗?考虑以下请求:

http://wind.com/mycontroller/myaction

所有的RewriteConds都会失败,但接下来会被接受:

RewriteRule ^.*$ /water.php [NC,L]

不是吗?

在任何情况下,似乎在托管级别更好地处理。听起来你想要为每个域提供完美不同的ZF应用程序,每个应用程序驻留在自己的文件夹中,没有跨应用程序共享(除了可能的外部库)。在这种情况下,只需将域名(在托管级别)映射到不同的文件夹。

答案 1 :(得分:1)

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteCond %{HTTP_HOST} (www\.)?water\.com [NC]
RewriteCond %{REQUEST_URI} !^/zend/application/Water/ [NC]
RewriteRule ^.*$ /water.php [NC,L]

RewriteCond %{HTTP_HOST} (www\.)?wind\.com [NC]
RewriteCond %{REQUEST_URI} !^/zend/application/Wind/ [NC]
RewriteRule ^.*$ /wind.php [NC,L]

这应该适用于IMO。