带前缀bug的Symfony2路由

时间:2016-06-12 23:59:49

标签: php .htaccess symfony redirect

今天我所有的symfony项目因为一个非常奇怪的'bug'而被打破。

我的routing.yml文件是:

luckyseven_admin_bundle:
    resource: "@LuckySevenAdminBundle/Resources/config/routing.yml"
    prefix:   /admin/

我的AdminBundle routing.yml文件是:

admin_homepage:
    path:   /
    defaults:  { _controller: LuckySevenAdminBundle:Home:index }

...more...

直到今天,一切运作良好。当我去mysite.com/admin时,一切运作良好。从今天开始,每个SYMFONY PROJECT都已损坏,URL返回错误(重定向到同一页面/ admin的循环)。

  

太多REDIRECT错误。

尝试使用app_dev.php进行调试我发现在DEV环境中它运行良好,而在PROD中提供TOO MANY REDIRECTS,所以我无法调试此问题。

我的问题只有'带有前缀的根页'。在该示例中,您可以看到具有前缀/ admin /的“根”页面(admin_homepage)。这样的页面将返回错误。

其他页面(不是root,如'/ example')可以使用。

我无法理解为什么它一直工作到今天为什么我只有'root'路径才有这个问题(并且仅在PROD模式下)。你能帮我理解吗?

修改

使用我之前发布的相同代码,但在主路由中移动根路径(admin_homepage),更改'/ admin'中的路径'/',它可以正常工作。正如我所说,问题在于路径文件中的“根路径”将使用前缀导入。

主要routing.yml(工作):

luckyseven_admin_bundle:
    resource: "@LuckySevenAdminBundle/Resources/config/routing.yml"
    prefix:   /admin/
admin_homepage:
    path:   /admin
    defaults:  { _controller: LuckySevenAdminBundle:Home:index }

AdminBundle routing.yml文件(工作):

admin_test:
    path: /test #it becames /admin/test
    defaults:  { _controller: LuckySevenAdminBundle:Home:index }

Security.yml

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls: 
        dev:
            pattern: ^/(_(profiler|wdt|error)|css|images|js)/
            security: false
        main:
            pattern: ^/
            form_login:
                always_use_default_target_path: false
                default_target_path: /admin
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager

            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, role: ROLE_ADMIN }
        - { path: ^/api, role: IS_AUTHENTICATED_ANONYMOUSLY }

0 个答案:

没有答案