我使用模块设置了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]
答案 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执行操作。