06.09.2008 → Блог

URL вида site.com/page

Откуда взялась мода в некоторых CMS (тот же Drupal) делать по умолчанию ссылки вида site.com/page, т. е. без слэша в конце? Что это должно обозначать?

Слэш обозначает иерархический порядок. Т.е. в адресе site.com/page/subpage/file.txt три слэша указывают на то, что в компьютерной системе, ассоциированой с site.com есть подраздел page, в нем — подраздел subpage, в котором находится файл file.txt.

Адрес site.com/page/subpage/ говорит нам, что мы запрашиваем главную, ИНДЕКСНУЮ страницу, которая расположена в данном месте иерархии. Это может быть просто список файлов, а может быть дизайн, который в идеале должен предоставлять тот же список файлов (ссылок на информационные блоки), но в максимально удобном виде. Обычно индексный файл — это index.php или index.html, но знать нам об этом незачем — мы хотим получить индексную страницу, а не узнать, как она называется.

А что такое site.com/page/subpage ? Отсутствие слэша в конце как бы говорит нам, что ДАЛЬШЕ ничего нет, никаких подразделов. То есть, перед нами конкретный файл? А что у него за формат тогда? А если удалить из строки название файла, чтобы попасть на уровень выше по иерархии — мы должны удалять и слэш? Если нет — получится диссонанс в обозначениях, а если нужно удалять…

То вопрос: нафиг было себе эти проблемы создавать?


Комментарии (35)

  1. Александр Вольф | 06.09.2008 в 15:04

    Причина банальна на мой взгляд - URL вида site.com/page проще парсить

  2. Роман Настенко | 06.09.2008 в 15:10

    Александр Вольф, если бы какой-то программист Вася писал себе superCMS, то может быть, но когда разговор идет о многолетней разработке серьезной CMS — это не причина.

  3. CrashOver | 06.09.2008 в 15:35

    Зато в WP всё хорошо :) А на счёт Drupal, может просто забыли подправить что-то?

  4. Андрей Лось | 06.09.2008 в 15:43

    В ModX тоже без слэша. Это плохо только с идеологической точки зрения или с технической тоже?

  5. Сергей | 06.09.2008 в 15:53

    Нужно избавляться от http://, www, .html, .php. Эти технические штуки мешают прочтению URL людьми.

    Вот адрес статьи, в которой мы сейчас с вами находимся: http://www.perfectomania.com/blog/2008/09/url_types/
    Все очень понятно и удобно. Виден основной домен, видны разделы и видно название страницы. От http можно тоже избавиться, как от бесполезного для обычных людей шума.

  6. Александр Вольф | 06.09.2008 в 16:00

    Роман, Вам не приходило в голову, что изначально каждая крутая CMS была маленькой и парсер урлов могли просто написать простой, который не сильно “адекватен”. А по мере развития проекта его сперва забыли переписать, потом было лень, а в конце-концов уже стало невозможно перейти на более адекватный вариант из-за обратной совместимости?

    А в новых CMS такого вида урлы собезьянничали.

    Андрей, такого рода URL плохи с обеих точек зрения, IMHO

  7. Сергей | 06.09.2008 в 16:02

    Давайте с вами:

    - проставлять долготу и широту напротив каждого адреса на улице
    - в адресной строке браузера писать IP вместо URL
    - диктуя по телефону адрес своего сайта не забывать про http:// и www
    - Здороваться с друзьями по имени, фамилии и отчеству
    - Покупая в магазине ноутбук называть продавцу полный код модели, а не название типа HP Pavilion

    Технологии должны прогибаться под нас, а не мы под них.

  8. Сергей | 06.09.2008 в 16:08

    Статья в тему:

    URLs will be an Anachronism
    http://www.web-strategist.com/blog/2008/09/04/urls-to-be-an-anachronism/

  9. Денис Судилковский | 06.09.2008 в 16:08

    Отсутствие слэша в конце как бы говорит нам, что ДАЛЬШЕ ничего нет, никаких подразделов.
    Я один, которому отсутствие (равносильно как и присутствие) слеша в конце урла ни о чем не говорит? (;

  10. Роман Настенко | 06.09.2008 в 16:14

    На счет www, тут такой прикол. Если писать адрес в оффлайне, то писать просто perfectomania.com конечно можно, но желательно все же указывать ФОРМАЛЬНО, что мы пишем именно URL-адрес, а не два слова с точкой посредине. Т. е. либо http: либо www писать. Я выбираю www :)

    Хотя это, конечно, анахронизм и спорный момент.

  11. Роман Настенко | 06.09.2008 в 16:17

    Денис Судилковский, так я о чем говорю: кому-то такой нормально, кого-то коробит. Причины, почему может коробить я навел. Вот и вопрос: нафиг между двух вариантов выбирать спорный, какое у него преимущество?

    Удобство для разработчика — это не аргумент.

  12. Роман Настенко | 06.09.2008 в 16:18

    Если бы сайты делались как удобно разработчикам, такой штуки как clean URL’s вообще бы не было, все бы довольствовались site.com/Directory263/GetTimeStats.Aspx?Directiv=1323456&Status=43535

  13. Денис Судилковский | 06.09.2008 в 16:32

    На счет www, тут такой прикол.
    В офлайне я пишу только с WWW, это помогает экономить место и не писать слово “веб-сайт:”. Кто его знает, в чьи руки попадет моя визитка, а так, все знают, куда на кампутере вписывать все то, что начинается с www (;

  14. Евгений | 06.09.2008 в 16:35

    хз, пользщуюсь wordpress. Все окэ)

  15. Денис | 06.09.2008 в 18:36

    А что такое site.com/page/subpage ? Отсутствие слэша в конце как бы говорит нам, что ДАЛЬШЕ ничего нет, никаких подразделов. То есть, перед нами конкретный файл? А что у него за формат тогда?

    Во первых, я не припоминаю, чтобы в какой-либо спецификации упоминалось то, что отсутствие слэша в конце адреса показывает, что дальше ничего нету.
    Ну да ладно. Да, дальше ничего нет, никаких подразделов. Это конкретный файл. Например, http://sample.com/user/Denis/profile — это конечный адрес. Тут мой профиль.
    Формат файла указан в HTTP заголовке Content-Type. Для того он и создан. «.php» или «.py» — это не форматы того, что получают браузеры. Они получают text/plain, text/html, application/xhtml+xml.
    Так где проблема?

    А вот добавление лишнего слэша в конце и неудобно для пользователя и непонятно («тут есть что-то ещё?»).

  16. Silver Ghost | 06.09.2008 в 18:54

    ИМХО, http://site.com/article указывает на то, что запрашивается файл article, а вот какой у него формат, то тут уже и так все ясно - либо он отдается в (x)HTML или XML, либо он отдается на скачивание и тут уж расширение появится в любом случае (если разработчик правильный). Если же это все таки страница, то не пофигу ли простому пользователю в каком виде он лежит на серваке? Будь то php, asp, pl, cgi - мы все равно получаем результат отработки и ничего более.

    ИМХО, все это естественно.

  17. Silver Ghost | 06.09.2008 в 19:08

    И еще. Ром, ну прикрути ты OpenID… Намного удобнее будет же.

  18. Владимир Лапшин | 06.09.2008 в 20:50

    Вообще различные расширения файлам придуманы только для удобства. Реально они совершенно не нужны. Поэтому то, что в данном случае его нет не вижу ничего страшного. Абсолютно нормальный подход. Также как текстовые файлы в юниксовых системах тоже его часто не имеют.

  19. Роман Настенко | 06.09.2008 в 20:50

    Silver Ghost, OK.

  20. Роман Настенко | 06.09.2008 в 21:01

    А вот добавление лишнего слэша в конце и неудобно для пользователя и непонятно («тут есть что-то ещё?»).

    В смысле “тут есть что-то еще”? Как я писал в записи, запрос со слэшем в конце обозначает запрос индексного файла. В случае http://sample.com/user/Denis/profile мы запрашиваем сущность profile, которая находится В Denis. Мы не запрашиваем индексный файл, мы запрашиваем значимую, окончательную сущность. Т. е. нахождение здесь ссылки на, допустим, http://sample.com/user/Denis/profile/resume уже не предполагается, так как если такая ссылка есть, то в ней же прямо указано, что она находится в http://sample.com/user/Denis/profile/

    А значит ссылку на нее логичнее искать так же, из http://sample.com/user/Denis/profile/

    В свою очередь http://sample.com/user/Denis/profile/resume/ может содержать не только, собственно, резюме, но и, допустим ссылки на само-видеопрезентацию http://sample.com/user/Denis/profile/resume/video.avi

    Извините, если немного сумбурно выражаюсь. Смотрим тут по ТВ матч сборной Украины, немножко пива выпил :)

    Владимир Лапшин, а на счет расширений согласен. Если это — не не-web файл, например .mp3, .pdf, то разрешение указывать обязательно, а в случае всевозможных индексных гипертекстовых файлов — это никому не нужно.

  21. Нда.. | 07.09.2008 в 8:45

    Я не думаю, что парень с несколькими годами опыта в интернете может критиковать cms, которая устоялась и активно развивается, при этом получила награду лучше опэн сорс 2008 года.

  22. Станислав Малкин | 11.09.2008 в 2:11

    По-моему это все фигня.

    Намного хуже, когда site.com/page/subpage и site.com/page/subpage/ это одна и таже страница. Вот за такое действительно надо руки отрывать.

    Во всех нормальных системах есть либо то, либо другое. А вот некоторые решили, что им пофиг, есть слеш в конце или нет.

    Я думаю, что не нужно пояснять, почему плохо, что одна и таже страница имеет один и тот же урл с разницей только в слеш.

    Лучше вот эту хрень доносить до умов тех, кто делает эти ЦМС, чем бороться за то, чтобы ставили или не ставили слеш в конце.

    Кстати в нормальных системах site.com/page/subpage просто тупо во фронтконтроллере делается редиректом на site.com/page/subpage/ и таким образом все вопросы снимаются. Проверить можете прямо тут, в вордпресе :)

  23. Михаил | 11.09.2008 в 10:19

    Станислав, руки надо отрывать за педантизм в системах, где данные вводит пользователь

  24. Роман Настенко | 11.09.2008 в 10:32

    Станислав Малкин, а что, в таком случае адрес со слэшем должен возвращать 404?

    В общем, как я и писал, делайте адреса со слэшем и не создавайте себе проблем :)

  25. Станислав Малкин | 11.09.2008 в 11:58

    Роман Настенко, нет. Должен быть редирект на без слеша, если уже выбрали такой вариант, когда все страницы без слеша в конце.

    Михаил, боюсь, что не понял смысл Вашего сообщения ко мне :)

  26. Михаил | 11.09.2008 в 12:07

    Станислав, Вы в последнем сообщении уточнили, что имели в виду, у меня возник вопрос такой же, как и у Романа

  27. Станислав Малкин | 11.09.2008 в 12:13

    Михаил, значит в моей логике ошибки нет?:)

  28. Михаил | 11.09.2008 в 13:03

    Станислав, в целом в логике ошибок нет, вы предложили один из вариантов поведения сайта, при вводе тех или иных данных, и я их приемлю, потому что считаю прозрачными для пользователей. Что не понял, так это резкого негативного отношения к тому, что страница отображается со слэшом и без.

    Свою позицию я ещё не выработал по этому поводу, возникает слишком много “если”. Если смотреть на множество урл, как на дерево, то отсутствие слеша в адресах листьев, наверное, оправдано, но не критично. Возможно, в будущем, для пользователей он будет говорить много :) сейчас же, он пока заставляет ломать голову разработчикам.

  29. Роман Мовчан | 14.09.2008 в 16:17

    Рома, забросаю булыжниками.
    Ты не разобрался в ситуации и пишешь ерунду.

    отсутствие слеша, присутствие слеша ниочем не говорит. Для браузера это просто адрес, от не воспринимает это как индексный файл и файл вообще

    Я думаю, что не нужно пояснять, почему плохо, что одна и таже страница имеет один и тот же урл с разницей только в слеш.

    оооо… я уже приготовил попкорн и готов слушать почему это плохо

  30. Роман Настенко | 15.09.2008 в 0:54

    Роман Мовчан, вообще-то о браузерах я ничего не писал. Я о том, как могут восприниматься адреса людьми.

  31. Роман Мовчан | 15.09.2008 в 0:57

    о том как адреса воспринимаются людьми… Ром, советую спросить не-айтишников как они воспринимают адреса. Ты. может удивишься, узнав что в большинстве люди не понимают разницы ?param=val1&param2=val2 и /param/value1/param2/value2

  32. Роман Настенко | 15.09.2008 в 0:58

    Роман Мовчан, техническую разницу? Конечно не понимают. А вот понять, что /param/value1/param2/value2 обозначает иерархию — смогут многие.

  33. CrashOver | 15.09.2008 в 1:28

    Понять может и смогут, вопрос. Задумываются ли?

  34. Роман Настенко | 15.09.2008 в 1:40

    CrashOver, пользователи вообще редко могут понять, что их раздражает, а что полезно. Это не отменяет факта, что обычно они не могут нормально воспользоваться системой — именно по вине создателей. В данном случае вопрос не в том, так ли уж ужасно такое решение (без слэшей), а в том, нафиг его применять, если некий недостаток возможен, а преимуществ — никаких?

  35. alllifts | 20.09.2008 в 1:33

    ИМХО, просто криворукие. Что в Друпале, что в Джумле.
    Вордпресс рулет!


Комментировать

XHTML: Вы можете использовать эту разметку: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>