0

我有一个使用模块的 Zend Framework 应用程序设置。EG 我有一个“股票”模块和一个“交易”模块。我希望这些子域有多个子域,即 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]
4

2 回答 2

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 来处理。

希望这会对你有所帮助!

于 2013-02-05T01:45:19.673 回答
0
RewriteCond %{HTTP_HOST} ^(.*)\.website\.com$ [NC]
RewriteRule ^(.*)$ /%1$1

RewriteCond 应该与whatever.website.com RewriteRule 匹配,然后将 URL 从 映射whatever.website.com/pathwhatever.website.com/whatever/path

此规则集将在您现有的 RewriteRules 之间进行,并且您不会终止它,[L]以便 index.php 规则可以作用于结果 URL。

于 2013-02-02T01:34:54.377 回答