.htaccess twitter或facebook URL命名约定

时间:2010-04-04 01:43:27

标签: php .htaccess mod-rewrite

对于我的社交网站,我想构建一个facebook或twitter类似的URL重写命名约定。

以Twitter为例,他们的网页标有twitter.com/about,另一页标有twitter.com / {$ username}

但是,您如何区分将已注册我们网站的用户称为“约”。由此我们将在用户“约”和关于页面之间发生服务器冲突。

处理此问题的最佳方法是什么?

4 个答案:

答案 0 :(得分:2)

通常情况下,您会看到此实施,以便无法发生冲突。例如,您可以将所有用户驻留在虚拟/用户目录或子域中:mysite.com/users/msilvisusers.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的网址结构。

希望有所帮助!

编辑:我忘了提到这并不能阻止人们注册,这只会阻止世界其他地方与该人页面相关联,以防止他们需要雇佣他们对您的核心页面进行某种验证,即联系等。