Что лучше для сайта рельсов? /{логин} или / пользователь / {логин}
Что лучше (для пользователя, для долговечности, для производительности, для чего угодно) иметь:
http://{site}/ {login}, например, http://wildobs.com/adam_jack
или же
Http://{сайт}/ пользователь / {} Войти
Плюсы бывшего:
- Пользователь чувствует себя более особенным.
- URL-адреса короче.
Минусы бывшего:
- Не может быть пользователей с логинами, соответствующими ключевым словам, и ключевые слова, вероятно, со временем растут.
Очевидно, что это важно, чтобы получить правильные (или ошибаться и придерживаться), поскольку все пользовательские URL-адреса основаны на нем. Смена сайта будет казаться самоубийством.
Перевешивают ли минусы (особенно со временем) плюсы?
5 ответов
Я бы сказал, что минусы перевешивают плюсы, поэтому перейдите с /user/login over /login. Подумайте о стековом потоке, поскольку он также MVC: я думаю, что проще программировать, зная, что все в /user/blah всегда будет ссылаться на пользователя, тогда как если вы этого не сделаете, вам придется рассмотреть все возможности.
Например, в site / foo foo может быть именем пользователя, страницей администратора или каким-либо другим ключевым словом. Намного легче иметь дело, если вы все правильно сегментируете, так что вы знаете, что если вы видите site / user / foo, это всегда пользователь с именем foo.
Вы могли бы рассмотреть третий вариант:
Разграничение пользователей одним символом, а не каталогом, как в unix.
Http: // сайт / ~ имя пользователя
Это может даже привести к modrewrite к / user / username, если это более удобно.
Тогда у вас есть короткие имена, с которыми легко иметь дело, и ни одна из ваших обычных страниц не будет использовать этот специальный символ.
-Адам
Существует очень важная проблема с разрешением пользователям создавать произвольные имена в корне веб-сервера (как они могли бы, выбирая свой собственный логин, если вы используете /{логин} вместо / пользователь /{логин}): некоторые имена имеют особые магические значения, и эти значения определяются третьими лицами. Например:
- robots.txt, также известный как "стандарт исключения роботов", сопровождаемый всеми хорошими поисковыми системами.
- favicon.ico, который начинался как стандарт Internet Explorer, а затем был принят несколькими другими браузерами.
- Некоторые веб-сайты (по крайней мере, Google и IIRC Yahoo) используют тот факт, что вы можете создать файл с особым именем в корне веб-сервера в качестве доказательства того, что вы являетесь веб-мастером сайта, и, таким образом, вы можете получить доступ к некоторым дополнительным функциям (например, Google Webmaster Tools).
Есть несколько других; Я слышал о файлах Sitemap и файлах, обеспечивающих дополнительный междоменный доступ, но я (или кто-либо еще) не могу знать все из них.
Из RESTful MVC последний раз, когда я проверял пример плагина Restful Authentication, это шаблон создания сеанса. Таким образом, вместо входа в систему пользователь создает сеанс для пользователя. В этом случае GET http://{site}/session/new
что бы показать экран входа и POST http://{site}/session
с правильными параметрами войдет пользователь, если аутентификация прошла успешно.
Затем, если вы хотите, можете создать новый маршрут для http://{site}/login
что бы перенаправить на http://{site}/session/new
, так же DELETE http://{site}/session
выйдет из системы
Лично я бы пошел на /user / {логин}
Использование /{login} слишком похоже на загромождение глобального пространства имен, и мы все знаем, что глобальные перемены плохи;)