I tried to my limit. Mod_rewrite had been such a nightmare. My last try is the code bellow and even with www.water.com working I could not make www.wind.com do the same. In the mod_rewrite log what I get is www.wind.com (HTTP_HOST) being compared to www.water.com all the time. the rewrite never reaches the second group of lines. Someone perhaps know how to achieve that please?
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开发者_JAVA百科]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /wind.php [NC,L]
----------------------------------------------------------
For the water group, you have two RewriteRules after your sequence of RewriteConds. The first RewriteRule is applied conditionally based upon the result of the RewriteConds.
But won't the second RewriteRule be applied to all remaining requests, even requests to the domain wind.com
? Consider a request for:
http://wind.com/mycontroller/myaction
It will fail all the RewriteConds for water, but then get picked up by:
RewriteRule ^.*$ /water.php [NC,L]
Won't it?
In any case, it seems like this is better handled at the hosting level. Sounds like you want comepletely distinct ZF apps for each domain, each residing in its own folder, no cross-app sharing (except possibly external libs). In that case, just map the domains - at the hosting level - to their different folders.
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]
This should work IMO.
精彩评论