isw*_*nky 4 php regex routing yaml symfony
我目前在Symfony2中使用需求路径来匹配任何URL并适当地处理请求。例如,"example.com/blog/posts/my-new-post"将路径返回blog/posts/my-new-post到控制器,然后将其分割并检查现有数据等。这很好,问题在于路由的配置方式意味着即使我有其他路由,它也将始终返回相同的模板文件设定。
symfony_default_page:
path: /{path}
defaults: { _controller: SymfonyBundle:Default:page }
requirements:
path: "^.+"
Run Code Online (Sandbox Code Playgroud)
但是,如果我想在网址中调用“论坛”或“管理员”,它将自动使用上述路由配置。有什么方法可以排除特定路径,并让适当的路由/控制器处理这些请求?
例如:
requirements:
path: "^ (exclude: "admin/" and "blog/") .+"
Run Code Online (Sandbox Code Playgroud)
因此,如果可以访问admin,admin /或admin / other-area,它将使用其路由配置,如果不存在,则抛出404。
事实证明,非常基本的正则表达式可以解决此问题:
^(?!admin|login|blog).+
symfony_default_page:
path: /{path}
defaults: { _controller: SymfonyBundle:Default:page }
requirements:
path: "^(?!admin|login|blog).+"
Run Code Online (Sandbox Code Playgroud)
但是,正如@ Santiago00所建议的那样,将不同的路由以正确的顺序放置在bundle / config / routing.yml中比较容易,或者如果您使用多个捆绑包,则更改导入捆绑包的顺序会更容易。 app/config/routing.yml
| 归档时间: |
|
| 查看次数: |
6296 次 |
| 最近记录: |