URL на основе имени пользователя - PullRequest
2 голосов
/ 30 сентября 2010

http://twitter.com/codinghorror
http://twitter.com/login

Они оба похожи на твиттер-аккаунты, но второй нет.Это системная страница.

Откуда Twitter знает, что logout не является именем пользователя, и как он гарантирует, что ни один пользователь не зарегистрируется под именем системной страницы, которое существует или может появиться в будущем?1009 *

Ответы [ 3 ]

3 голосов
/ 30 сентября 2010

В большинстве сред маршрутизации url существует порядок приоритета для ваших правил маршрутизации.Обычно первая идет первой, поэтому первый URL-шаблон, который соответствует, управляет URL-адресом.

В этом случае, скажем, в твиттере должны были быть определены маршруты

map.connect 'login', :controller => 'auth', :action => 'login'
map.connect ':username', :controller => 'user', :action => 'show'

Первый маршрут будет соответствовать URL-адресуtwitter.com/login, но если вы введете twitter.com/coddinghorror, он не сможет соответствовать первому маршруту, а затем совпадать со вторым.

2 голосов
/ 30 сентября 2010

Они не могут знать заранее.Какое развитие они будут делать на годы вперед.Но, конечно, можно зарезервировать слова для тенденций, текущих и будущих проектов - на всякий случай.

Вход в систему / выход из нее легко достигается путем переписывания / маршрутизации URL

/login/ - go to login code
/([a-z]+?)/ - go to user page appending $1
0 голосов
/ 30 сентября 2010

Хороший вопрос? Я предполагаю, что в твиттере есть специальная логика, которая проверяет имя пользователя (проверяет наличие специальных слов) и соответственно использует перезапись и маршрутизацию URL. Хотелось бы увидеть фрагмент кода:)

...