php-如何在Symfony中为example.com/username创建路由并保留所有旧URL
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-如何在Symfony中为example.com/username创建路由并保留所有旧URL,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1464字,纯文字阅读大概需要3分钟。
内容图文
![php-如何在Symfony中为example.com/username创建路由并保留所有旧URL](/upload/InfoBanner/zyjiaocheng/685/95b5cc6fba7a40d0b410dbd841326e1b.jpg)
目标:
我想要用户名URL,例如Facebook,Twitter等:example.com/Username
问题:
如果添加,则无法访问/ register等URL.
* @Route("/{user}", name="user_profile")
当然,我可以有/ user / username,但是对于这种情况,我需要/ username.
实施此方法的正确方法是什么?
一种想法是为404页添加事件侦听器,该事件侦听器检查URL是否为example.com/abc并检查用户名是否存在.但这似乎是一个坏习惯.
简短问题:
如何使www.example.com/username之类的路线像Facebook,以专业的方式与/ register等冲突?
解决方法:
首先,您需要定义如何处理/ register,/ login,/ impressum之类的路径以及与这些路径(例如“ register”,“ login”和“ impressum”)冲突的用户名的冲突.您可能想要一个不允许的用户名黑名单,因为它们与您的预定义路径冲突.
为了解决实际的问题,您可以在所有其他路由之后为/ {username}创建一个“ catchall”路由(也许使用正则表达式对{username}部分有一些限制).
当您在symfony项目中请求路径时,symfony将按照定义的顺序检查路径.因此,如果您最后定义了用户配置文件路由(位于routing.yml文件的底部),则仅当所有其他路由均不符合请求时,才使用该路由.
这意味着,如果您的用户名类似于“ register”,则他将无法打开其个人资料页面,因为注册页面的/ register路由将首先与请求匹配.
在Symfony Standard Edition中,路由如下所示:
app:
resource: '@AppBundle/Controller/'
type: annotation
您不能使用注释处理路线位置,除非您在routing.yml文件中写入了多个条目.为了确保用户个人资料路由是最后一条,您可能应该删除此操作的注释,并使用yml创建路由,如下所示:
app:
resource: '@AppBundle/Controller/'
type: annotation
user_profile:
path: /{user}
defaults:
_controller: App:User:profile
内容总结
以上是互联网集市为您收集整理的php-如何在Symfony中为example.com/username创建路由并保留所有旧URL全部内容,希望文章能够帮你解决php-如何在Symfony中为example.com/username创建路由并保留所有旧URL所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。