如何使用zf2的子域路由?

时间:2017-04-10 07:49:26

标签: php apache .htaccess dns zend-framework2

我正在尝试在zf2中使用子域路由,但是获取dns错误。我添加了这样的路线:

'testSubDomain' => array(
                        'type'    => 'Hostname',
                        'options' => array(
                                'route'    => ':blog.mydomain.net',
                        ),
                        'may_terminate' => false,
                        'child_routes' => array(
                                'home' => array(
                                        'type' => 'Literal',
                                        'options' => array(
                                                'route'    => '/',
                                                'defaults' => array(
                                                        'controller' => 'Application\Controller\Solution',
                                                        'action'     => 'testSubdomain'
                                                )
                                        )
                                )
                        )
                ),

我创建了apache vhost,并且/etc/apache2/sites-enabled/000-default.conf的配置如下:

<VirtualHost *:80>

        ServerName mydomain.net
        ServerAlias mydomain.net
        DocumentRoot /var/www/beta/public

        <directory /var/www/beta/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all

        </directory>

        <Directory /var/www/beta/public>
                Options -Indexes
                Require all granted
        </Directory>
</VirtualHost>
----------
Some other vhost
-----------

当我访问blog.mydomain.net时,显示无法找到服务器DNS地址。我还没有在000-default.conf中定义任何vhost for subdmoain所以它应该使用第一个。我还为子域添加了一条A记录,但它也无效。

1 个答案:

答案 0 :(得分:2)

此问题中发布的解决方案是正确的,有些事情需要牢记。不要为您的子域创建Vhost,但您的子域应该指向serer。如果为子域创建vhost,则它将遵循appplication模块配置路由并显示主页。

'testSubDomain' => array(
                        'type'    => 'Hostname',
                        'options' => array(
                                'route'    => 'blog.mydomain.net',
                        ),
                        'may_terminate' => false,
                        'child_routes' => array(
                                'home' => array(
                                        'type' => 'Literal',
                                        'options' => array(
                                                'route'    => '/',
                                                'defaults' => array(
                                                        'controller' => 'Application\Controller\Solution',
                                                        'action'     => 'testSubdomain'
                                                )
                                        )
                                )
                        )
                ),

当你去blog.mydomain.net时,它会显示testSubdomain函数的内容。 无需为子域创建任何vhost。