Php Symfony 2路由在prod中不起作用

Php Symfony 2路由在prod中不起作用,php,symfony,routing,Php,Symfony,Routing,我用symfony开发了一个非常简单的博客。 有两个包:blog和admin,它们在开发环境中都很好。。然而,主管理路径在prod中似乎不起作用,因为它抛出了一个404。其他每一个路由(例如/admin/categories等)都可以工作,但是/admin只有在我编写/app_dev.php/admin时才可以工作。已清除缓存。 我不认为我插入了一些代码来阻止管理员,因为我不知道我在哪里可以做这样的事情。。 也不知道调试需要什么样的代码片段抱歉,但如果有人要求,我会更新 管理路线: admin_

我用symfony开发了一个非常简单的博客。 有两个包:blog和admin,它们在开发环境中都很好。。然而,主管理路径在prod中似乎不起作用,因为它抛出了一个404。其他每一个路由(例如/admin/categories等)都可以工作,但是/admin只有在我编写/app_dev.php/admin时才可以工作。已清除缓存。 我不认为我插入了一些代码来阻止管理员,因为我不知道我在哪里可以做这样的事情。。 也不知道调试需要什么样的代码片段抱歉,但如果有人要求,我会更新

管理路线:

admin_image_upload:
    path:     /imageupload
    defaults: { _controller: SzoBeszAdminBundle:Admin:imageUpload }

admin_posts:
    path:     /admin
    defaults: { _controller: SzoBeszAdminBundle:Admin:index }

admin_posts_paginated:
    path:     /admin/posts/{pageNumber}
    defaults: { _controller: SzoBeszAdminBundle:Admin:index }

admin_categories:
    path:     /admin/categories
    defaults: { _controller: SzoBeszAdminBundle:Admin:category }

admin_category_submit:
    path:     /admin/categorysubmit
    defaults: { _controller: SzoBeszAdminBundle:Admin:categorySubmit }

admin_post_submit:
    path:    /admin/postsubmit
    defaults: { _controller: SzoBeszAdminBundle:Admin:postSubmit }
    requirements:
        _method:  GET|POST

admin_post_edit:
    path: /admin/post/edit/{id}
    defaults: { _controller: SzoBeszAdminBundle:Admin:postEdit }
    requirements:
        id:  \d+

admin_post_delete:
    path: /admin/post/delete/{id}
    defaults: { _controller: SzoBeszAdminBundle:Admin:postDelete }
    requirements:
        id:  \d+

admin_category_edit:
    path: /admin/category/edit/{id}
    defaults: { _controller: SzoBeszAdminBundle:Admin:categoryEdit }
    requirements:
        id:  \d+

admin_category_delete:
    path: /admin/category/delete/{id}
    defaults: { _controller: SzoBeszAdminBundle:Admin:categoryDelete }
    requirements:
        id:  \d+
博客路线:

blog_homepage:
    path:     /
    defaults: { _controller: BlogBundle:Main:index } 
    requirements:
        _method:  GET

blog_homepaginated:
    path:     /page/{pageNumber}
    defaults: { _controller: BlogBundle:Main:index }

blog_categorypage:
    path:     /{theCategory}
    defaults: { _controller: BlogBundle:Main:showCategory }
    requirements:
        _method:  GET

blog_categorypaginated:
    path:     /{theCategory}/page/{pageNumber}
    defaults: { _controller: BlogBundle:Main:showCategory }
    requirements:
        _method:  GET

blog_tagpage:
    path:     /tag/{tag}
    defaults: { _controller: BlogBundle:Main:tag }

blog_showpost:
    path:     /{theCategory}/{title}
    defaults: { _controller: BlogBundle:Main:showPost } 
    requirements:
        _method:  GET

blog_tagpaginated:
    path:     /tag/{tag}/page/{pageNumber}
    defaults: { _controller: BlogBundle:Main:tag }
安全:

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        in_memory:
            memory:
                users:
                    szobeszadmin: { password: ***, roles: [ 'ROLE_SUPER_ADMIN' ] }

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        admin_secured:
            pattern:   ^/
            anonymous: ~
            http_basic:
                realm: "Secured Area"     

    access_control:       
        - { path: ^/admin, roles: ROLE_SUPER_ADMIN }

确保您在内核中注册了所有创建的bundle,这里是prod部分:

$bundles = array(...);
保留已注册的开发包,如下所示:

if (in_array($this->getEnvironment(), array('dev', 'test'))) {
    $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
    $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
    $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
}
另外,如果在app.php文件中看到false(参数用于测试):

将false更改为true:

$kernel = new AppKernel('prod', true);

希望对您有所帮助,祝您度过愉快的一天。

确保您在Apache中启用了mod_rewrite模块


请参阅以获得帮助

问题是我在web文件夹中创建了一个admin文件夹,因此apache尝试了使用该文件夹的/admin路由,而不是我设置的路由。

比较
router:debug--env=prod
router:debug--env=dev
您尝试过在部署服务器上或在/web/.htaccess中查看重写规则吗没有什么是的规则是好的
$kernel = new AppKernel('prod', true);