Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess Htaccess与子域和zend模块_.htaccess - Fatal编程技术网

.htaccess Htaccess与子域和zend模块

.htaccess Htaccess与子域和zend模块,.htaccess,.htaccess,我有一个使用模块的Zend Framework应用程序设置。例如,我有一个“股票”模块和一个“交易”模块。我想为这些文件创建多个子域,即stock.website.com、transaction.website.com(因此每个文件的DocumentRoot目录都相同)。问题是,由于它们是Zend应用程序的“模块”,我必须去stock.website.com/stock或transaction.website.com/transaction 我想知道是否有一种方法可以使用rewriteCond规

我有一个使用模块的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]
RewriteCond应该匹配
whatever.website.com
然后,重写规则将URL从
whater.website.com/path
映射到
whater.website.com/whater/path


此规则集位于现有重写规则之间,您不会使用
[L]
终止它,以便index.php规则可以作用于生成的URL。

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

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

剩下的就让Zend来处理


希望这对你有帮助

你好,大卫,谢谢你的回复!也许我没有正确地将htaccess文件放入?我将它直接放在
RewriteRule^.*$-[NC,L]
行之后,index.php指令之前。虽然它没有改变任何东西(是的,我确实将网站重命名为我的网站名称)。这是正确的放置位置,但作为测试,为了确保前一条规则没有干扰,请尝试将两行放在顶部,就在
RewriteEngine打开后
并修改RewriteRule行以重定向(这不是您想要的,但为了测试,它将允许您在浏览器中轻松查看结果URL,以确保规则实际匹配):
RewriteRule^(.*)$/%1$1[R=301,L]
(RewriteCond行将保持不变)还有,通常的注意事项-更改后重新启动服务器,清除浏览器缓存,如果打开,则禁用mod_缓存,以确保缓存不是问题。感谢您的回复,但这似乎还不够奇怪。我认为这一定与Zend如何处理模块路由有关。user2041531的回答解决了问题,tha感谢您的帮助!@user2041531A小问题:当我创建子域时,哪个文件夹必须是子域文件夹root:application/modules/stock?谢谢!
RewriteCond %{HTTP_HOST} ^(.*)\.website\.com$ [NC]
RewriteRule ^(.*)$ /%1$1
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"