我正在构建一个PHP应用程序。对于我的应用程序,访问domain.com/username或domain.com/accountnumber可以设置和显示用户的个人资料/页面。
我的问题是这样 - 你如何做到这一点,同时保留制作具有domain.com/pagename网址的信息丰富的应用程序页面的能力?我的主要例子是vimeo,它有vimeo.com/about,vimeo.com/developers等,同时允许你将用户名设置为vimeo.com/username。我担心的是,我将启动我的应用程序而无法在将来创建我想要的链接,因为它被视为用户名。
您的建议是什么,或者您的经历是什么?是否有建议保留的常用列表?我不知道该怎么做。谢谢您的帮助。
答案 0 :(得分:2)
您可以通过多种方式实现您的要求 - 阅读路线和路线以获得更好的理解。
许多框架提供了一种实现您所要求的方法 - Zend Framework就是其中之一。
很明显,如果你是从头开始构建它,你可以实现一个不同的结构,即
domain.com/u/joebloggs
domain.com/user/joebloggs
domain.com/a/123456
domain.com/account/123456
这有效地确保您的网址不会受到某个用户名的影响。如果使用创建自己的路线,则需要查看Mod Rewrite。
答案 1 :(得分:0)
已经有许多提供此功能的框架,请尝试Zend Framework。
您需要阅读使用ZF的路线,以实现您的需求。
答案 2 :(得分:0)
答案是你不要那样设计你的网址。我知道vimeo做到了,但他们可能已经陷入了这种头痛。
更好的解决方案是命名资源。仔细查看stackoverflow的网址,以获得更好的网址设计示例。
如果您完全坚持使用此网址设计,请考虑将“内容令牌”(标识您想要的内容的位)组织成组,并为其提供优先顺序。 E.g:
用户注册时,不要让他们使用静态页面的名称。 (您可能需要提前保留一组静态页面名称。)
如果您稍后创建新的静态页面并且用户名冲突,您可以强行更改其用户名并向他发送“对不起”的电子邮件。希望这是一个非常罕见的事件,你不需要用代码来解决它。
答案 3 :(得分:0)
一种方法是在注册时使用curl
或类似的方式请求domain.com/requestedname
,如果网址未返回404,则会向用户返回错误。至于 future < / em>冲突,根本没有办法做到这一点。你要么必须在所有潜在的未来保留字的开头列出一个列表并禁止那些用户名(不切实际),交叉指责并希望不发生冲突(也是不切实际的),请在未来时请求用户更改用户名发生冲突(不专业?)或对用户名和系统页使用不同的命名空间。