zend-framework – 帮助将子域映射或路由到Zend Framework Controller(站点的移动版本)

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了zend-framework – 帮助将子域映射或路由到Zend Framework Controller(站点的移动版本)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要做的是使用子域来获取我的ZF应用程序的特殊移动版本.理想情况下,它会映射到特定的控制器,如下面的示例,但此时我愿意尝试任何有效的方法

爆. m.domain.COM/action将路由到“移动”控制器并指定任何操作.

在这里谷歌的其他地方发现了一些类似的问题,但我觉得我错过了一些明显的东西,因为无论我设置什么路线,它都被忽略了.我怀疑它与htaccess有关但在那里可能有问题.

这是我目前在我的bootstrap文件中的路径(但我在这里尝试了许多不同的模式).现在我只是想让它显示简单的普通索引:

$hostRoute = new Zend_Controller_Router_Route_Hostname(':subdomain.domain.com',array(
            'controller' => 'index','action' => 'index'
            )
    );
$plainPathroute = new Zend_Controller_Router_Route(':controller/:action/*',array('controller' => 'index','action' => 'index'));
$controller->getRouter()->addRoute('mobile',$hostRoute->chain($plainPathRoute));

我的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]

现在有两种方法我一直在这里尝试,因为我一直很沮丧.

>在我的主机帐户中创建子域“m”
>我的网站托管帐户中不存在子域“app”

对于方法1,它只是转到domain.com/m/中的通用index.htML文件.方法2告诉我页面不存在.

我真的希望这里有一些我不知道的东西.就像我上面提到的那样,只要我有一个子域指向特定的控制器,我就不会挑剔它是如何执行的.这将是一个非常简化的网站版本,所以我真的不需要做任何复杂的事情.

谢谢你的帮助.

解决方法

首先,您需要配置虚拟主机以处理多个域:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAlias m.example.com
    ServerAlias www.m.example.com
    ...

您也可以通过主机面板选项添加指向您的站点根目录的新子域来执行此操作.

然后,您可以创建一个路由链,如您的示例所示,或者自己处理交换机,例如在控制器插件中:

$host = strtolower($request->getServer('HTTP_HOST'));
if ('m.' === substr($host,2) || 'www.m.' === substr($host,6)) {
    $themes->setTheme('m');
    $userSession->theme = 'm';
    ...

脚本宝典总结

以上是脚本宝典为你收集整理的zend-framework – 帮助将子域映射或路由到Zend Framework Controller(站点的移动版本)全部内容,希望文章能够帮你解决zend-framework – 帮助将子域映射或路由到Zend Framework Controller(站点的移动版本)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。