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

Zend framework 将多个域指向不同的文件夹,zend-framework,mod-rewrite,Zend Framework,Mod Rewrite,我尽了最大努力。莫迪的重写真是一场噩梦。我最后一次尝试的是下面的代码,即使www.water.com正在运行,我也无法让www.wind.com也这样做。 在mod_重写日志中,我得到的是www.wind.com(HTTP_主机)一直与www.water.com进行比较。重写从未到达第二组行。也许有人知道如何做到这一点,好吗 RewriteEngine On ---------------------------------------------------------- RewriteCon

我尽了最大努力。莫迪的重写真是一场噩梦。我最后一次尝试的是下面的代码,即使www.water.com正在运行,我也无法让www.wind.com也这样做。 在mod_重写日志中,我得到的是www.wind.com(HTTP_主机)一直与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]
----------------------------------------------------------

对于“水”组,在重写顺序之后有两条重写规则。根据重写条件的结果有条件地应用第一个重写规则

但是,第二条重写规则不适用于所有剩余的请求,甚至是对域
wind.com
的请求吗?考虑一个请求:

http://wind.com/mycontroller/myaction

水的所有重写条件都将失败,但随后将通过以下方式获取:

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

不是吗


在任何情况下,这似乎是更好地处理在托管级别。听起来您希望每个域都有完全不同的ZF应用程序,每个应用程序都位于自己的文件夹中,没有跨应用程序共享(可能除了外部LIB)。在这种情况下,只需将域(在宿主级别)映射到它们的不同文件夹。

对于水组,在重写顺序之后有两条重写规则。根据重写条件的结果有条件地应用第一个重写规则

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]
但是,第二条重写规则不适用于所有剩余的请求,甚至是对域
wind.com
的请求吗?考虑一个请求:

http://wind.com/mycontroller/myaction

水的所有重写条件都将失败,但随后将通过以下方式获取:

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

不是吗

在任何情况下,这似乎是更好地处理在托管级别。听起来您希望每个域都有完全不同的ZF应用程序,每个应用程序都位于自己的文件夹中,没有跨应用程序共享(可能除了外部LIB)。在这种情况下,只需在宿主级别将域映射到它们的不同文件夹

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]
这在国际海事组织应该行得通


这在我看来应该行得通。

您有什么理由希望使用mod_rewrite来执行此操作,而不是修改主机上的域以指向服务器上所需的文件夹吗?不确定,因为我使用的是zf,并试图在它自己的文件夹结构上保持zf应用程序的分离,并且不显示任何子文件夹,这正是我的目的。简而言之,原因正是标题所说的。我只是没有mod_重写或服务器管理技能来找出最好的方法。事实上,在我看来,这在主机级别处理得更好。好的,肯定有聪明的方法可以做到这一点。我需要试试这个,我真的不知道它会如何工作,或者它是否会。我一直在尝试很多事情,直到现在他们中的任何一个人都成功了。我无法访问vhost,它是一个共享主机。这个测试是在本地进行的,我想确保我可以轻松地部署它(在工作时)。如果mod_rewrite是一个选项,那么它也不是一个iLegimate问题。另外,请注意,这在网络上是一个非常常见的问题。您是否有任何理由希望使用mod_rewrite来执行此操作,而不是修改主机上的域以指向服务器上所需的文件夹?不确定,因为我使用的是zf,并试图在它自己的文件夹结构上保持zf应用程序的分离,并且不显示任何子文件夹,这正是我的目的。简而言之,原因正是标题所说的。我只是没有mod_重写或服务器管理技能来找出最好的方法。事实上,在我看来,这在主机级别处理得更好。好的,肯定有聪明的方法可以做到这一点。我需要试试这个,我真的不知道它会如何工作,或者它是否会。我一直在尝试很多事情,直到现在他们中的任何一个人都成功了。我无法访问vhost,它是一个共享主机。这个测试是在本地进行的,我想确保我可以轻松地部署它(在工作时)。如果mod_rewrite是一个选项,那么它也不是一个iLegimate问题。另外,请注意,这是一个在网上非常常见的问题。我会小心尝试的。我只是很累,我知道该走了。但你完全明白了。非常感谢你的解释!在当地做的。只是不知道我能否在遥控器上实现同样的效果,因为我无法访问vhost。睡个好觉后我会看到的。我见过的大多数允许你在一个托管帐户中托管多个域的主机,即使是共享主机,仍然允许你指定要为每个域提供服务的文件夹。不需要明确访问vhost;他们通常在内部处理这些问题,并为您提供一个管理界面,如Cpanel、Plesk等。我想您可以通过这种方式将它们分开。干杯好啊我会小心尝试的。我只是很累,我知道该走了。但你完全明白了。非常感谢你的解释!在当地做的。只是不知道我能否在遥控器上实现同样的效果,因为我无法访问vhost。睡个好觉后我会看到的。我见过的大多数允许你在一个托管帐户中托管多个域的主机,即使是共享主机,仍然允许你指定要为每个域提供服务的文件夹。不需要明确访问vhost;他们通常在内部处理这些问题,并为您提供一个管理界面,如Cpanel、Plesk等。我想您可以通过这种方式将它们分开。干杯