0

im developed a pretty simple blog in symfony. There are 2 bundles: blog and admin which are both fine in dev enviroment.. however the main admin route doesnt seem to work in prod as it throws a 404. Every other route (e.g. /admin/categories and so on) works but /admin works only if i write /app_dev.php/admin. Already cleared the cache. I dont think that i inserted some code to block admin cos i dont know where could i do such things.. Also dont know exactly what code snippets need for debugging sorry but i will update if anybody ask for one.

Admin route:

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 route:

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:

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 }
fagyi
  • 93
  • 2
  • 8

3 Answers3

1

Make sure you register ALL YOUR CREATED BUNDLES in Kernel are here, it is a prod section:

$bundles = array(...);

Leave registered dev bundles like this:

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();
}

Also if in app.php file you see false (parameter is for testing):

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

Change false to true:

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

Hope it helped, have a nice day.

Ignas Damunskis
  • 1,515
  • 1
  • 17
  • 44
0

Make sure you have the mod_rewrite module enabled in Apache.

See here for some help.

Community
  • 1
  • 1
kito
  • 181
  • 1
  • 5
0

The problem was that i created an admin folder inside the web folder so apache tried the /admin route with that folder instead of the route i set.

fagyi
  • 93
  • 2
  • 8