ZF2路由器无法进行分段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZF2路由器无法进行分段相关的知识,希望对你有一定的参考价值。

所以我有一个在本地运行的ZF2项目,效果很好。当我在登台服务器上设置它时遇到了路由问题。它将“/”路由到适当的控制器,但在访问时,说“/ blog”它将查找实际文件夹并返回以下错误:

The requested URL /blog was not found on this server.

通常,如果它与任何已定义的路由不匹配,ZF2将返回错误,指出URL无法与路由匹配。但似乎这打破了整个应用程序。有没有其他人遇到过类似的问题/发现修复?

谢谢。

答案

尝试使用以下代码替换整个.htaccess文件。

this will work surely.

RewriteEngine On

RewriteCond%{REQUEST_FILENAME} -s [OR]

RewriteCond%{REQUEST_FILENAME} -l [OR]

RewriteCond%{REQUEST_FILENAME} -d

RewriteRule ^。* $ - [NC,L]

RewriteCond%{REQUEST_URI} :: $ 1 ^(/。+)(。+):: 2 $

RewriteRule ^(。*) - [E = BASE:%1]

RewriteRule ^(。*)$%{ENV:BASE} index.php [NC,L]

或者您可以访问此链接以获取更新详细信息。 Htaccess file for any project

另一答案

您的重写规则未被使用。如果您使用的是Apache,则表明您没有将.htaccess文件上传到登台服务器,或者您的登台服务器未配置为读取.htaccess文件。目前,请求甚至没有到达您的Zend Framework应用程序,因为您的Web服务器未配置为将其发送到那里。

另一答案

我真的不知道这是否可以解决你的疑问,但过去我和你几乎有同样的问题。这是我在module.config.php中使用的路由部分:

对于'admin'模块,例如:

<?php 
...
'router' => array(
        'routes' => array(
            'admin' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/admin',
                    'defaults' => array(
                        '__NAMESPACE__' => 'AdminController',
                        'controller'    => 'Index',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type'    => 'Segment',
                        'options' => array(
                            'route'    => '[/:controller[/:action[/id/:id]]][/]',
                            'constraints' => array(
                                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                            ),
                            'defaults' => array(
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),

或者,对于主要模块:

<?php
'router' => array(
        'routes' => array(
            'home' => array(
                'type' => 'ZendMvcRouterHttpLiteral',
                'options' => array(
                    'route'    => '/',
                    'defaults' => array(
                        'controller' => 'ApplicationControllerIndex',
                        'action'     => 'index',
                    ),
                ),
            ),
            // The following is a route to simplify getting started creating
            // new controllers and actions without needing to create a new
            // module. Simply drop new controllers in, and you can access them
            // using the path /application/:controller/:action
            'application' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/',
                    'defaults' => array(
                        '__NAMESPACE__' => 'ApplicationController',
                        'controller'    => 'Index',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type'    => 'Segment',
                        'options' => array(
                            'route'    => '[:controller[/:action[/id/:id]]][/]',
                            'constraints' => array(
                                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                            ),
                            'defaults' => array(
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),

以上是关于ZF2路由器无法进行分段的主要内容,如果未能解决你的问题,请参考以下文章

ZF2 : 来自路由的参数在提交表单后被清除

如何使用分段控制在 iphone 上添加超过 6 个分段和图像

创建特征向量以对空中图像中的片段进行分类

angularJS使用ocLazyLoad实现js延迟加载

使用friendlyUrl 重新路由查询字符串

如何从我的活动中意图在我的标签栏中分段?