2014-11-04 34 views
0

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

管理员路线:

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 } 
+0

比较'router:debug --env = prod'和'router:debug --env = dev' – Koalabaerchen 2014-11-04 22:21:26

+0

您是否试过在部署服务器上或/web/.htaccess中查看重写规则? – Stan 2014-11-05 06:06:23

+0

比较但没有和是规则是好的 – fagyi 2014-11-05 17:36:34

回答

1

确保注册您的所有您所创建的BUNDLES在内核都在这里,这是一个刺部分:

$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文件,你看到假的(参数是用于测试):

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

false改为true:

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

希望它有帮助,祝你有美好的一天。

+0

不,这些在我的代码是正确的:/但thx的答复 – fagyi 2014-11-05 17:01:47

0

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

请参阅here寻求帮助。

0

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