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 ? Отсутствие слэша в конце как бы говорит нам, что ДАЛЬШЕ ничего нет, никаких подразделов. То есть, перед нами конкретный файл? А что у него за формат тогда? А если удалить из строки название файла, чтобы попасть на уровень выше по иерархии — мы должны удалять и слэш? Если нет — получится диссонанс в обозначениях, а если нужно удалять…
То вопрос: нафиг было себе эти проблемы создавать?




Причина банальна на мой взгляд - URL вида site.com/page проще парсить
Александр Вольф, если бы какой-то программист Вася писал себе superCMS, то может быть, но когда разговор идет о многолетней разработке серьезной CMS — это не причина.
Зато в WP всё хорошо :) А на счёт Drupal, может просто забыли подправить что-то?
В ModX тоже без слэша. Это плохо только с идеологической точки зрения или с технической тоже?
Нужно избавляться от http://, www, .html, .php. Эти технические штуки мешают прочтению URL людьми.
Вот адрес статьи, в которой мы сейчас с вами находимся: http://www.perfectomania.com/blog/2008/09/url_types/
Все очень понятно и удобно. Виден основной домен, видны разделы и видно название страницы. От http можно тоже избавиться, как от бесполезного для обычных людей шума.
Роман, Вам не приходило в голову, что изначально каждая крутая CMS была маленькой и парсер урлов могли просто написать простой, который не сильно “адекватен”. А по мере развития проекта его сперва забыли переписать, потом было лень, а в конце-концов уже стало невозможно перейти на более адекватный вариант из-за обратной совместимости?
А в новых CMS такого вида урлы собезьянничали.
Андрей, такого рода URL плохи с обеих точек зрения, IMHO
Давайте с вами:
- проставлять долготу и широту напротив каждого адреса на улице
- в адресной строке браузера писать IP вместо URL
- диктуя по телефону адрес своего сайта не забывать про http:// и www
- Здороваться с друзьями по имени, фамилии и отчеству
- Покупая в магазине ноутбук называть продавцу полный код модели, а не название типа HP Pavilion
Технологии должны прогибаться под нас, а не мы под них.
Статья в тему:
URLs will be an Anachronism
http://www.web-strategist.com/blog/2008/09/04/urls-to-be-an-anachronism/
Отсутствие слэша в конце как бы говорит нам, что ДАЛЬШЕ ничего нет, никаких подразделов.
Я один, которому отсутствие (равносильно как и присутствие) слеша в конце урла ни о чем не говорит? (;
На счет www, тут такой прикол. Если писать адрес в оффлайне, то писать просто perfectomania.com конечно можно, но желательно все же указывать ФОРМАЛЬНО, что мы пишем именно URL-адрес, а не два слова с точкой посредине. Т. е. либо http: либо www писать. Я выбираю www :)
Хотя это, конечно, анахронизм и спорный момент.
Денис Судилковский, так я о чем говорю: кому-то такой нормально, кого-то коробит. Причины, почему может коробить я навел. Вот и вопрос: нафиг между двух вариантов выбирать спорный, какое у него преимущество?
Удобство для разработчика — это не аргумент.
Если бы сайты делались как удобно разработчикам, такой штуки как clean URL’s вообще бы не было, все бы довольствовались site.com/Directory263/GetTimeStats.Aspx?Directiv=1323456&Status=43535
На счет www, тут такой прикол.
В офлайне я пишу только с WWW, это помогает экономить место и не писать слово “веб-сайт:”. Кто его знает, в чьи руки попадет моя визитка, а так, все знают, куда на кампутере вписывать все то, что начинается с www (;
хз, пользщуюсь wordpress. Все окэ)
Во первых, я не припоминаю, чтобы в какой-либо спецификации упоминалось то, что отсутствие слэша в конце адреса показывает, что дальше ничего нету.
Ну да ладно. Да, дальше ничего нет, никаких подразделов. Это конкретный файл. Например,
http://sample.com/user/Denis/profile— это конечный адрес. Тут мой профиль.Формат файла указан в HTTP заголовке Content-Type. Для того он и создан. «.php» или «.py» — это не форматы того, что получают браузеры. Они получают
text/plain, text/html, application/xhtml+xml.Так где проблема?
А вот добавление лишнего слэша в конце и неудобно для пользователя и непонятно («тут есть что-то ещё?»).
ИМХО, http://site.com/article указывает на то, что запрашивается файл article, а вот какой у него формат, то тут уже и так все ясно - либо он отдается в (x)HTML или XML, либо он отдается на скачивание и тут уж расширение появится в любом случае (если разработчик правильный). Если же это все таки страница, то не пофигу ли простому пользователю в каком виде он лежит на серваке? Будь то php, asp, pl, cgi - мы все равно получаем результат отработки и ничего более.
ИМХО, все это естественно.
И еще. Ром, ну прикрути ты OpenID… Намного удобнее будет же.
Вообще различные расширения файлам придуманы только для удобства. Реально они совершенно не нужны. Поэтому то, что в данном случае его нет не вижу ничего страшного. Абсолютно нормальный подход. Также как текстовые файлы в юниксовых системах тоже его часто не имеют.
Silver Ghost, OK.
В смысле “тут есть что-то еще”? Как я писал в записи, запрос со слэшем в конце обозначает запрос индексного файла. В случае 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, то разрешение указывать обязательно, а в случае всевозможных индексных гипертекстовых файлов — это никому не нужно.
Я не думаю, что парень с несколькими годами опыта в интернете может критиковать cms, которая устоялась и активно развивается, при этом получила награду лучше опэн сорс 2008 года.
По-моему это все фигня.
Намного хуже, когда site.com/page/subpage и site.com/page/subpage/ это одна и таже страница. Вот за такое действительно надо руки отрывать.
Во всех нормальных системах есть либо то, либо другое. А вот некоторые решили, что им пофиг, есть слеш в конце или нет.
Я думаю, что не нужно пояснять, почему плохо, что одна и таже страница имеет один и тот же урл с разницей только в слеш.
Лучше вот эту хрень доносить до умов тех, кто делает эти ЦМС, чем бороться за то, чтобы ставили или не ставили слеш в конце.
Кстати в нормальных системах site.com/page/subpage просто тупо во фронтконтроллере делается редиректом на site.com/page/subpage/ и таким образом все вопросы снимаются. Проверить можете прямо тут, в вордпресе :)
Станислав, руки надо отрывать за педантизм в системах, где данные вводит пользователь
Станислав Малкин, а что, в таком случае адрес со слэшем должен возвращать 404?
В общем, как я и писал, делайте адреса со слэшем и не создавайте себе проблем :)
Роман Настенко, нет. Должен быть редирект на без слеша, если уже выбрали такой вариант, когда все страницы без слеша в конце.
Михаил, боюсь, что не понял смысл Вашего сообщения ко мне :)
Станислав, Вы в последнем сообщении уточнили, что имели в виду, у меня возник вопрос такой же, как и у Романа
Михаил, значит в моей логике ошибки нет?:)
Станислав, в целом в логике ошибок нет, вы предложили один из вариантов поведения сайта, при вводе тех или иных данных, и я их приемлю, потому что считаю прозрачными для пользователей. Что не понял, так это резкого негативного отношения к тому, что страница отображается со слэшом и без.
Свою позицию я ещё не выработал по этому поводу, возникает слишком много “если”. Если смотреть на множество урл, как на дерево, то отсутствие слеша в адресах листьев, наверное, оправдано, но не критично. Возможно, в будущем, для пользователей он будет говорить много :) сейчас же, он пока заставляет ломать голову разработчикам.
Рома, забросаю булыжниками.
Ты не разобрался в ситуации и пишешь ерунду.
отсутствие слеша, присутствие слеша ниочем не говорит. Для браузера это просто адрес, от не воспринимает это как индексный файл и файл вообще
Я думаю, что не нужно пояснять, почему плохо, что одна и таже страница имеет один и тот же урл с разницей только в слеш.
оооо… я уже приготовил попкорн и готов слушать почему это плохо
Роман Мовчан, вообще-то о браузерах я ничего не писал. Я о том, как могут восприниматься адреса людьми.
о том как адреса воспринимаются людьми… Ром, советую спросить не-айтишников как они воспринимают адреса. Ты. может удивишься, узнав что в большинстве люди не понимают разницы ?param=val1¶m2=val2 и /param/value1/param2/value2
Роман Мовчан, техническую разницу? Конечно не понимают. А вот понять, что /param/value1/param2/value2 обозначает иерархию — смогут многие.
Понять может и смогут, вопрос. Задумываются ли?
CrashOver, пользователи вообще редко могут понять, что их раздражает, а что полезно. Это не отменяет факта, что обычно они не могут нормально воспользоваться системой — именно по вине создателей. В данном случае вопрос не в том, так ли уж ужасно такое решение (без слэшей), а в том, нафиг его применять, если некий недостаток возможен, а преимуществ — никаких?
ИМХО, просто криворукие. Что в Друпале, что в Джумле.
Вордпресс рулет!