Почему во многих приложениях Ruby on Rails отсутствуют косые черты? - PullRequest
3 голосов
/ 23 октября 2009

Почему во многих приложениях Ruby on Rails отсутствуют косые черты в URL? Одним из примеров является http://basecamphq.com/tour. AFAIK, это идет вразрез с веб-стандартами. Это как-то связано с настройкой RoR?

Ответы [ 7 ]

12 голосов
/ 23 октября 2009

Это не противоречит веб-стандартам. http://basecamphq.com/tour считается файлом, http://basecamphq.com/tour/ будет каталогом (Примечание: оба URL-адреса не равны, хотя некоторые веб-серверы, например Apache, будут проверять другой, если один не существует). Поскольку оба вида виртуальны, решение в основном зависит от разработчика (это не зависит от используемых языков программирования или сред).

Я не думаю, что это как-то связано с кэшированием (как упомянуто nilamo), так как для контроля кэша достаточно HTTP-заголовков - возможно, некоторые обратные прокси-серверы имеют другое поведение по умолчанию.

5 голосов
/ 23 октября 2009

Ваш аргумент неверен:

Спецификация URL в w3c не приводит к использованию конечных слешей в URL.

Вот что говорится о слешах:

Путь интерпретируется таким образом зависит от используемой схемы. Как правило, зарезервированный слеш "/" символ (ASCII 2F hex) обозначает уровень в иерархической структуре, часть более высокого уровня слева от косая черта.

Rails довольно хорошо придерживается этой директивы.

Мои волосы - птица!

2 голосов
/ 23 октября 2009

Поскольку косая черта обозначает каталог, и вы обращаетесь не к каталогам в Rails, а к страницам. Это похоже на tour.html в вашем примере, за исключением того, что .html можно игнорировать, поскольку он используется по умолчанию.

1 голос
/ 23 октября 2009

Рискну сказать, что поскольку в RoR набираемый вами URL-адрес обычно не сопоставляется со статическим файлом в каталоге, он динамически разрешается в файле rout.rb, и путь к нему заканчивается косой чертой, не заканчивая ' не имеет большого смысла.

0 голосов
/ 11 сентября 2012

Rails использует косые черты в качестве разделителей маркеров параметров, и маршрут, подобный

/post/:year/:page

, по умолчанию соответствует обоим, / post / 2012 / a-title и / post /2012 / a-title / , если вы не делаете magic . Это не имеет ничего общего с веб-стандартами .

С точки зрения браузера, эти два пути сильно различаются, когда речь идет об относительных ресурсах.В ответ на вышеизложенное сбраузер отправит на сервер второй запрос на: / post / 2012 / image.png (первый случай) или / post / 2012 / a-title / image.png (второй случай), поскольку браузер использует косую черту для разрешения путей, как если бы они были каталогами.

Однако разработчикам Rails обычно все равно, потому что они не пишут URL-адреса явно при отображении содержимого!Они имеют в своем распоряжении URL-помощников, которые скрывают от них эту логику ... если вы не используете помощников для создания контента, тогда вам все равно.

0 голосов
/ 23 октября 2009

Это форма перезаписи URL. Он не противоречит веб-стандарту и на самом деле многое делает для удобства использования, и было доказано, что он помогает вашему рейтингу в поисковых системах. Подумай об этом так.

Вы рассказываете своему другу об этом классном посте, который вы видели в чьем-то блоге. Какой URL проще сказать другу:

  1. http://www.coolwebsite.com/post.aspx?id=aebe6ca7-6c65-4b5c-bac8-9849faa0a467

OR

  1. http://www.coolwebsite.com/cool-ideas-for-posts/
0 голосов
/ 23 октября 2009

Некоторые любят косые черты, некоторые нет. Страстные аргументы могут быть сделаны для обеих сторон.

...