对于我的社交网站,我想构建一个facebook或twitter类似的URL重写命名约定。
以Twitter为例,他们的网页标有twitter.com/about,另一页标有twitter.com / {$ username}
但是,您如何区分将已注册我们网站的用户称为“约”。由此我们将在用户“约”和关于页面之间发生服务器冲突。
处理此问题的最佳方法是什么?
答案 0 :(得分:2)
通常情况下,您会看到此实施,以便无法发生冲突。例如,您可以将所有用户驻留在虚拟/用户目录或子域中:mysite.com/users/msilvis
或users.mysite.com/msilvis
。
我不建议您通过站点的根目录访问所有用户,因为这可能会限制您添加页面。例如,假设您还没有“关于”页面,但是用户注册并自称“约”;你搞砸了。
如果您仍然选择这样做,在注册之前,请尝试向您的网站发送HTTP请求到用户可能拥有的页面。如果你没有获得404,那么某些东西已经有了这个名字。
答案 1 :(得分:2)
我们的最终决定是,在我们的服务器mysite.com/user上请求页面时,它首先检查是否是一个页面,如果它不是一个页面,它假定它是一个用户,在这种情况下,它检查该用户是否是一个对象,如果不是,那么它将被传递到我们的404页面。
所以在这个问题上,我们将使用你之前提到的HTTP请求,然后如果用户“约”如何仍然注册我们现在有一个页面,基本上很难成为他,因为他不是去看他的页面。
答案 2 :(得分:0)
我会限制某人创建与现有网址冲突的用户名的能力。
答案 3 :(得分:0)
如果您还处于开发的早期阶段,可以查看Kohana PHP框架。它的路由功能解决了zneak和dd突出显示的问题,您只需在路由中定义http://yoursite.com/about指向特定的控制器/动作,我认为您正在使用MVC设计模式,因为您需要类似Twitter的网址结构。
希望有所帮助!
编辑:我忘了提到这并不能阻止人们注册,这只会阻止世界其他地方与该人页面相关联,以防止他们需要雇佣他们对您的核心页面进行某种验证,即联系等。