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