具有子域和zend模块的Htaccess

时间:2012-11-02 01:55:46

标签: .htaccess

我使用模块设置了Zend Framework应用程序。例如。我有一个“库存”模块和一个“交易”模块。我希望有多个子域名,例如stock.website.com,transaction.website.com(因此DocumentRoot将是每个子目录的相同目录)。问题是,因为它们是Zend应用程序的“模块”,我必须去stock.website.com/stock或transaction.website.com/transaction。

我想知道是否有办法使用rewriteCond规则来识别子域,然后将该页面上加载的所有URL视为来自stock.website.com/stock,但只有stock.website。在地址栏中的com?

目前,我对zend应用程序有标准的htaccess规则。

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

2 个答案:

答案 0 :(得分:1)

我建议你可以使用Zend Route Hostname作为你的解决方案,因为Zend会根据主机名将请求(而不是htaccess)路由到特定模块,所以你强调查询字符串url就不是问题了。

基本上,您可以添加到您的application.ini,如下所示(仅适用于模块):

resources.router.routes.stock.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.stock.route = "stock.yourwebsite.com"
resources.router.routes.stock.defaults.module = "stock"

resources.router.routes.transaction.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.transaction.route = "transaction.yourwebsite.com"
resources.router.routes.transaction.defaults.module = "transaction"

其余的只是让Zend处理它。

希望这会对你有帮助!

答案 1 :(得分:0)

RewriteCond %{HTTP_HOST} ^(.*)\.website\.com$ [NC]
RewriteRule ^(.*)$ /%1$1

RewriteCond应匹配whatever.website.com 然后,RewriteRule将网址从whatever.website.com/path映射到whatever.website.com/whatever/path

此规则集将介于您现有的RewriteRules之间,并且您不会使用[L]终止它,以便index.php规则可以对生成的URL执行操作。