http://twitter.com/codinghorror
http://twitter.com/login
这些看起来都像是Twitter帐户,但第二个看起来不是。这是一个系统页面。
twitter如何知道logout
不是用户名,如何确保没有用户在系统页面名称下注册,或者将来可能存在?
答案 0 :(得分:3)
在大多数网址路由框架中,您的路由规则都有一个优先顺序。通常拳头先发球,所以匹配的第一个url patten控制网址。
在这种情况下,我们可以说twitter必须定义路由
map.connect 'login', :controller => 'auth', :action => 'login'
map.connect ':username', :controller => 'user', :action => 'show'
第一条路线与网址twitter.com/login匹配,但当您输入twitter.com/coddinghorror时,它将无法匹配第一条路线,然后匹配第二条路线。
答案 1 :(得分:2)
他们事先无法知道。他们将在未来几年做些什么样的发展。但是,诅咒可以保留趋势,当前和即将到来的项目 - 以防万一。
通过重写/路由URL
可以轻松实现登录/注销部分/login/ - go to login code
/([a-z]+?)/ - go to user page appending $1
答案 2 :(得分:0)
好问题? 我的猜测是Twitter有特殊的逻辑来检查用户名(检查特殊单词)并相应地利用URL重写和路由。 我很想看到代码的片段:)