Как вы думаете, как лучше всего создавать оптимизированные для SEO URL-адреса (динамически) в Rails?
Лучшая постоянная ссылка для Rails
Ответы (7)
Переопределите метод to_param
в ваших классах моделей, чтобы числовой идентификатор по умолчанию был заменен значимой строкой. Например, в этом самом вопросе в URL используется best-permalinking-for-rails.
У Райана Бейтса есть Railscast по этой теме.
У ActiveSupport есть новый метод в Rails, помогающий в этом — String#parameterize. Соответствующий коммит находится здесь; пример, приведенный в сообщении о коммите, - "Дональд Э. Кнут".parameterize => "donald-e-knuth"
В сочетании с переопределением to_param, упомянутым Джоном Топли, это значительно упрощает создание дружественных URL-адресов.
stringex rsl довольно крут, думайте об этом как о permalink_fu, сделанном правильно.
Я в основном использую to_param
, как предложил Джон Топли.
Не забудьте разместить индексы таким образом, чтобы все, что вы используете в to_param, можно было быстро найти, иначе вы получите полное сканирование таблицы при каждом доступе. (Не повышает производительность!)
Быстрый обходной путь — поместить идентификатор куда-нибудь туда, и в этом случае ActiveRecord проигнорирует остальную часть как бесполезную и просто будет искать по идентификатору. Вот почему вы видите множество сайтов Rails с такими URL-адресами, как http://example.com/someController/123-a-half-readable-title .
Для получения более подробной информации об этом и других наблюдениях SEO из моего опыта работы с Rails вы можете найти эту страницу. на моем сайте полезно.
Для меня friendly_id отлично работает, он также может генерировать слаги, поэтому вам не нужно беспокоиться о дублирующихся URL-адресах, также поддерживаются области видимости.
Ознакомьтесь с подключаемым модулем permalink_fu (извлеченным из Mephisto)... репозиторий Git находится здесь.
Я сделал небольшой и простой гем, который упрощает переопределение метода to_param. Его можно найти здесь.