Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Сделаем сервис лучше » ЧПУ (SEF) для URL форумов, топиков


ЧПУ (SEF) для URL форумов, топиков

Сообщений 1 страница 20 из 39

Опрос

Ввести ЧПУ?
Да

78% - 30
Нет

10% - 4
Незнаю

10% - 4
Голосов: 38

1

Это прежде всего надо тем, кто занимается SEO-оптимизацией и такие ссылки легче запомнить чем  id-23456%%#  и так далее... (Опрос не мульти!)

Описание:

ЧПУ (англ. Friendly URL) — веб-адреса, удобные для восприятия человеком (а также систем и методов построения таких адресов). Является аббревиатурой от словосочетания «Человеку Понятный Урл» («урл» — жаргонное для URL). Одними из первых о ЧПУ в России стали говорить и писать Стас Намин, Дмитрий Котеров и Дмитрий Смирнов.

Классический подход

Обычно параметры запроса (например, ID нужной страницы) передают сайту через GET-запрос, то есть указывая в URL после вопросительно знака в виде:
/acticles.php?tag=summer&action=list — просмотр списка статей с меткой summer (лето).
/news.php?topic=4&year=2003&month=10&sort=1 — отсортированные новости по теме 4 за октябрь 2003.
/catalogue.php?sect=11&kind=6&manuf=63 — товары производителя 63 типа 6 в отделе 11.

Это вполне понятно и естественно для разработчиков и программ, но не совсем понятно и не удобно для посетителей. Даже если числовые идентификаторы полностью заменить на человеческие слова, то адрес всё-равно останется очень громоздким. А когда параметров много и у них длинные названия, то URL может не помещаться полностью в адресную строку создавая дополнительные неудобства. В итоге URL становится не пригодным для человека.

Так же адреса часто становятся привязанными к технической реализации, так как, например, в «чистом»[1] PHP часть URL до вопросительного знака указывает на файл скрипта.

Концепция ЧПУ

Концепция ЧПУ предполагает максимально лаконичные и интуитивно понятные адреса, которые показывают естественную для человека логическую структуру данных на сервере, а не её программный интерфейс с модулями и параметрами. Структуру обычно представляют в виде иерархии как в обычной файловой системе, к которой привык пользователь.

Те же самые примеры, но с ЧПУ будут выглядеть уже так:
/catalogue/light/bulbs/ge/ — каталог товаров, отдел «Свет», лампочки, производитель GE.
/news/sport/2003/10/ — новости спорта, 2003 год, октябрь.
/articles/by-tags/summer.html cтатьи, по меткам, метка «лето».

Достоинства для посетителя очевидны:

Подобные адреса легко запомнить.
Можно продиктовать URL по телефону.
Чтобы перейти на уровень вверх достаточно стереть нужную часть пути.
Если человек уже был на вашем сайте и набирает адрес вручную, то он сразу может обратиться к нужному ему документу глядя на URL’ы предыдущих запросов.

Реализация

Apache

Для веб-сервера Apache существует мощный модуль mod_rewrite, который включается в стандартный дистрибутив. Он обладает массой возможностей интерпретации URL перед обработкой необходимым модулем.

В большинстве случае в файле .htaccess указывается с помощью регулярного выражения формат URL, который должен быть обработан как другой URL. Например:
RewriteEngine on
RewriteRule article/(d+)/? article.php?id=$1 [L]

Первая строчка включает mod_rewrite. Вот второй указывается, что веб-сервер при запросе URL вида /article/450/ должен обратиться к /article.php?id=450 .

Обработка URL в собственном скрипте

Разработчик может вручную обработать URL и на основе него вызвать какую-то функцию. Для этого, чаще всего, нужно с помощью mod_rewrite направить все запросы одному скрипту для обработки. Для этого нужно добавить в файл .htaccess следующее содержимое:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

Скрипт index.php уже будет брать URL из переменной REQUEST_URI (в PHP из $_SERVER['REQUEST_URI']) и на основе каких-то настроек запускать необходимый код.

Веб-framework

В большинстве инструментариев для создания сайта, таких как Django или Ruby on Rails, веб-сервер не обращается напрямую к скрипту через URL (как, например, в чистом PHP), а в специальном файле настроек указывается связь нужного метода для вывода страницы с шаблоном URL.

Для задачи шаблона URL используется либо регулярные выражения, либо специальный язык.

Например, в RubyOnRails:
ActionController::Routing::Routes.draw do |map|
map.connect 'users', :controller => 'user', :action => 'list'
map.connect 'users/:id', :controller => 'user', :action => 'show'
end

Строка 'users/:id' указывает на любые URL вида /users/1 или /users/login. Когда посетитель запросит такой адрес, то будет вызван метод show() класса UserController, а номер, которым заменил :id (в этом примере это 1 или login) будет передан как параметр. Собственно, при запросе страницы /users/ будет вызван метод list() того же класса, но уже без параметров.

В некоторых веб инструментариях (например, Ramaze или Merb, написанных на Ruby) связь URL и метода класса определяется названием и количеством аргументов метода.

Например, если у нас есть класс:
class CommentsController < Ramaze::Controller
def index
# Создание списка комментариев
end

def show(id)
# Вывод комментария с нужным ID
end
end

То чтобы вывести комментарий по ID равным 5 мы должны открыть URL /comments/show/5/ , то есть URL становиться вида /класс/метод/первый аргумент/второй аргумент/ . Конечно же обратиться мы можем только к классам, которые являются контроллерами, то есть к тем классам, для которых мы специально указали, что они должны обслуживать посетителей.

Отредактировано Lexx (Сб, 27 Июн 2009 00:51:44)

+1

2

Lexx
Реально бы это непомешало на сервисе, но твоя статья не ахти будет понятна... Лучше бы ты сам написал всё это. :)

Отредактировано rps (Сб, 23 Июл 2011 22:27:37)

0

3

После этого легче будет вкрутить Облако тегов.
А ссылки + составление этого облака, сами админы будут вбивать для удобства...

+1

4

rps
Админ поймет надеюсь.
Пример для тебя

как лучше

Обычно:
http://forum.mybb.ru/solnce.php?id=4801

или c использованием  ЧПУ:
http://forum.mybb.ru/solnce.html

Добавлено:

разница есть правда? Такие читабельные ссылки роботы с большим удовольствием хавают, роботы поисковых систем

Отредактировано Lexx (Сб, 27 Июн 2009 00:57:10)

+1

5

Lexx
Я то понимаю, что это и знаю, что так будет удобнее. Если знаешь месторасположение темы на форуме и её название, достаточно будет ввести в адресную строку

Код:
http://forum.mybb.ru/название раздела/название топика.html

Наприер:

Код:
http://forum.mybb.ru/spravochnaya/ikonki_razdelov_i_tem.html

И всё, ты в нужной темке. :)

+1

6

:yep:

+1

7

Удобно, но относительно сложнореализуемо. Особенно если учитывать создающиеся нагрузки в связи с генерацией url в зависимости от заголовка темы, имхо

+1

8

DART написал(а):

сложнореализуемо

не думаю.

0

9

Иначе уже бы сделали.

0

10

DART написал(а):

но относительно сложнореализуемо

Lexx написал(а):

не думаю.

Тоже так не думаю.
Если ссылки вида forum.mybb.ru/topic19619.html или forum.mybb.ru/user9327, то это вообще пустяки, о реализации и говорить нечего.
Немного помуторнее будет с реальным человеку понятным урл. Типа forum.mybb.ru/opros-o-vvode-chpu-sef.html, тут наверное повозиться стоит. Теоретически реализация понятна. Но какие будут подводные камни тут - мне неизвестно, практики не было.

По сути опроса - Да, стоит. Обсуждалось в аське с админом, основной фактор на момент разговора - время (нехватка).

+1

11

Duka
Загвоздка будет в том, что у нас иногда ставят в названиях тем спецсимволы... Как с этим быть?

Отредактировано rps (Вс, 28 Июн 2009 23:48:06)

0

12

rps написал(а):

Загвоздка будет в том, что у нас иногда ставять в названиях тем спецсимволы... Как с этим быть?

Ой, Паш, я тут чесслово ничего не могу сказать, могу лишь только погадать :)

+2

13

Спец символы в названиях тем, но ведь можно сделать как в том же ДЛЕ, создаешь название темы, и во втором поле вводишь тупо транслитом или, если уже и кириллический ЧПУ будет, русскими буквами название

+2

14

[M.@.t.r.i.x написал(а):

]Спец символы в названиях тем, но ведь можно сделать как в том же ДЛЕ, создаешь название темы, и во втором поле вводишь тупо транслитом или, если уже и кириллический ЧПУ будет, русскими буквами название

А если как в Википедии?)) Это вообще шикарно, вот только почти все движки не признают такого рода ссылки :(

+1

15

rps написал(а):

Загвоздка будет в том, что у нас иногда ставят в названиях тем спецсимволы... Как с этим быть?

Ошибка: недопустимые сиволы в названии темы!
вот так с этим быть =)
ДА

+1

16

И тогда уже на АЯКСЕ ее

+1

17

В википедии ссылки ЧПУ не только динамические, но и на русском - не пойдет.
Предлагалось динамические на транслите допустим с якорем конечным  .html такие хорошо кушает поисковик.

С запрещенными символами, думаю они там не будут, ну разве что подчеркивание и тире, но вроде они не запрещены. (однако мое дело предложение внести).
Как быть с спец символами? Заменить их на подчеркиванеи или цифры вот. Думаю не всем это понравится - пойдут и переименуют. Или просто не чувствительность к подобным спецсимволома.
Допустим тема такая    =тема=    а ссылка будет конечная такая   /tema.html

Отредактировано Lexx (Пн, 29 Июн 2009 01:37:06)

0

18

Похожая система действует для функций 'страницы'. Надеюсь видели, да? Вводим имя страницы и получаем в поле пониже название страницы в транслите которое будет после pages/ . Функция, вобщем то, уже существует. Там и посмотрите как она поступает со спецсимволами

+3

19

Lazary написал(а):

Там и посмотрите как она поступает со спецсимволами

Она существет там, а предлагается ввод на всем движке - было бы удобно )))

0

20

ЧПУ обязательный элемент будущего Майбб. По этому вопросу и обсуждать нечего :)

+3


Вы здесь » Единый форум поддержки » Сделаем сервис лучше » ЧПУ (SEF) для URL форумов, топиков