今天我所有的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 }