2009 09 ноября

Стандартный SEF в Joomla 1.5 и с чем его едят (miniFAQ)

logo В линейке 1.5 появилась замечательная вещь – создание SEF ссылок стандартным образом, без использования сторонних компонентов. В компонентах за поддержку данной возможности отвечает специальной файл router.php, в стандартных он существует, но не все разработчики сторонних компонентов включают эту возможность в свои расширения. Для активации этой прекрасной опции необходимо включить три переключателя (скрин и примеры ниже) и переименовать файл htaccess.txt в .htaccess (да да, именно так - с точкой вначале. Стандартный файловый менеджер windows "explorer" может не позволить этого сделать, тогда следует использовать сторонние менеджеры - TotalComm-r, Far, DOpus и подобные). При этом если мы используем все три опции – необходимо чтобы на сервере была поддержка mod_rewrite (убедиться можно посмотрев страницу «админка – помощь – информация о системе - информация PHP» либо обратиться в службу поддержки хостинга)

Примеры для каждого из вариантов

С выключенным SEF ссылка на блог категории и конечный материал из этой ленты имеют следующие адреса. Ниже мы поочередно включаем каждый переключатель и наблюдаем за результатом http://domen.ru/index.php?option=com_content&view=category&layout=blog&id=1&Itemid=53 http://domen.ru/index.php?option=com_content&view=article&id=1:welcome-to-joomla&catid=1:latest-news&Itemid=53

Базовые возможности включают в себя три опции:

1 – «Включить SEO» - убираем все некрасивые параметры из ссылки http://domen.ru/index.php/menublog - ссылка на блог категории, где menublog – alias пункта меню на данную страницу http://domen.ru/index.php/menublog/1-welcome-to-joomla - страница конечного материала, где welcome-to-joomla – алиас материала а 1 соответственно его ID 2 – «Использовать mod_rewrite» - избавляемся от index.php в начале ссылки http://domen.ru/menublog - ссылка на блог категории http://domen.ru/menublog/1-welcome-to-joomla - страница материала 3 - «Добавить суффикс к URL» - добавляем окончание страниц как html http://domen.ru/menublog.html - страница блока категории http://domen.ru/menublog/1-welcome-to-joomla.html - страница материала

Частые вопросы, связанные с стандартным SEF

Почему у меня ссылка имеет вид http://domen.ru/2009-10-22-22-40-41.html

По умолчанию если не прописан алиас\псевдоним для объекта – в таком формате подставляется дата его создания. Чтобы избежать – необходимо руками создавать алиасы (на латиннице) либо использовать соответствующий плагин автоматической транслитерации названий. См. ссылки в конце темы

Что такое алиас (alias), он же псевдоним?

При создании\редактировании каждого объекта движка (раздел, категория, материал, пункт меню) рядом с полем "Заголовок" есть поле ввода алиаса\псевдонима

Что за цифры подставляются перед алиасом:

Это ID раздела\категории\материала, насколько понимаю сделано для предотвращения создания одинаковых страниц. Для избавления для стандартных компонентов существует плагин HP Router (есть некоторые проблемы, описаны по ссылке ниже)

Поставил сторонний компонент а в нем адреса получаются вида http://domen.ru/ru/ac.html?ordering=11&letter=B

Значит данный компонент не содержит в себе файла router.php для поддержки стандартного SEF, как его написать самостоятельно – инструкция по ссылке ниже.

Создается ли дополнительная нагрузка на сервер?

Да, но крайне незначительная, любой сторонний компонент SEF даст в разы большую. Ниже два примера стандартной отладочной информации для страницы типа блог категории, показывающей 5 материалов SEF выключен
1
23
45
67
Application afterLoad: 0.000 seconds, 0.28 MB
Application afterInitialise: 0.119 seconds, 2.66 MBApplication afterRoute: 0.153 seconds, 3.22 MB
Application afterDispatch: 0.782 seconds, 7.56 MBApplication afterRender: 1.040 seconds, 8.24 MB
Использование памяти  8687272Запросов 14
SEF включен
1
23
45
67
Application afterLoad: 0.001 seconds, 0.28 MB
Application afterInitialise: 0.122 seconds, 2.66 MBApplication afterRoute: 0.163 seconds, 3.22 MB
Application afterDispatch: 0.878 seconds, 7.61 MBApplication afterRender: 1.161 seconds, 8.35 MB
Использование памяти  8802200Запросов 14

Меня не устраивает функционал стандартного SEF

Тогда остается использовать сторонние расширения, подробнее с ними можно ознакомиться по ссылке http://joomlaforum.ru/index.php/board,108.0.html

Дополнительные ссылки:

Как создать router.php в своем компоненте
Плагин HP Router - убираем ID из ссылки
Плагин ukr_rus_allias транслит заголовков материалов J1.5
Mod_rewrite – что это такое
Кирилические ссылки в стандартном SEF
Подборка расширений для SEF на extensions.joomla.org

Комментарии

0 danc1r0k пишет нам 11.11.2009 23:28
Хотел бы заметить, что иногда недостаточно просто сменить псевдонимы в разделе Материалы. А надо также их поменять и в меню, но это в том случае если сначала создали сайт, а потом уже настраивали SEF.
Сообщить модератору
0 Beliyadm отвечает 11.11.2009 23:32
Правильное замечание, но надо следить за структурой меню Если у нас сайт http://domen.ru, есть материал с алиасом material и в меню на него ведет пункт (не режима блог а именно на конечный материал) с псевдонимом link-material то в результате после перехода по ссылке мы увидим адрес http://domen.ru/link-material.html То есть - алиас пункта меню в данном случае доминирует над алиасом материала.
Сообщить модератору
0 Aleks_El_Dia пишет нам 30.11.2009 17:57
Замечательная статья :)
Сообщить модератору
0 Макс пишет нам 07.12.2009 13:19
Спасибо за статью! Мне кажется лучше сразу отказываться от стандартного джумловского плагина SEO, и пользоваться чем то вроде Artio JoomSEF. Плюсы - это автоматизм в создании алиасов и возможность ручного редактирования ссылок, к тому же стандартный джумловский плагина SEO выдает не очень красивые ссылки с ID разделов и категорий, как приведенная в вашей статье http://domen.ru/index.php/menublog/1-welcome-to-joomla
Сообщить модератору
0 Beliyadm отвечает 07.12.2009 16:11
Мне кажется совершенно наоборот. Для автоматизации создания алиасов есть плагин, для удаления ID - плагин (правда с известными проблемами). Компоненты типа артио создают дополнительную ощутимую нагрузку и тоже имеют определенные проблемы как в настройке так и функционировании
Сообщить модератору
0 solarisadmin пишет нам 16.01.2010 19:05
Спасибо за статью, интересно! Как раз присматриваюсь к джумле и собираю материалы ор ней
Сообщить модератору
0 спонтан пишет нам 18.01.2010 17:48
а если нет mod_rewrite и вообще если хост windows???
Сообщить модератору
0 Beliyadm отвечает 18.01.2010 17:50
mod_rewrite никакого отношения к windows/unix не имеет, это модуль apache, если же у вас как веб сервер стоит IIS - то извиняйте
Сообщить модератору
0 had пишет нам 23.01.2010 02:46
И еще вопрос: понятно, что первые 2 опции улучшают вид "урлов", а для чего третья?
Сообщить модератору
0 Beliyadm отвечает 15.02.2010 14:44
Третья добавляет к ссылке html
Сообщить модератору
0 bruha пишет нам 10.02.2010 15:29
А как в псевдоним (алиас) добавить символ подчеркивания? Joomla 1.5.15 его по умолчанию удаляет, псевдоним типа about_us превращается в aboutus. Замену на дефис не предлагать ((-8
Сообщить модератору
0 bruha отвечает 10.02.2010 15:52
Вопрос решен заменой $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str); на $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-_]/'), array('-',''), $str); в файле libraries\joomla\filter\filteroutput.php (91 строка)
Сообщить модератору
0 Кирилл пишет нам 15.02.2010 12:13
На мой взгляд, в стандартном компоненте есть один очень большой недостаток: подставив алис любой статьи в конец ссылки вида site.ru/category (где category - любая категория вашего сайта), вы можете получить ту же статью. Пример: site.ru/tv/623-blurayextracapacity site.ru/blur ay/623-blurayextracapacity Кроме того, не закрывается доступ к статьям по стандартным ссылкам, без обработки sef компонентом.
Сообщить модератору
0 Beliyadm отвечает 15.02.2010 14:46
Да, у стандартного компонента есть такая ошибка. Но - на индексацию это не влияет, данных ссылок же на сайте не существует, потому в индекс он не попадают. Единственно для чего можно использовать эту ошибку - с стороны конкурентов производить подлог ссылок для роботов по разным нехорошим словам с целью забанить и понизить в рейтинге, но это уже отдельный вопрос. Хочется верить, что в 1.6 данная проблема будет исправлена
Сообщить модератору
0 Кирилл отвечает 15.02.2010 15:04
Всё не так просто. В индекс они, как раз-таки, попадают ... не знаю как, но это факт. Не хочу сейчас делать скрины, просто поверьте наслово (ну или на форуме поищите мою тему, ник wharfadale). Это, конечно, не у всех статей (около 5%), но всё же меня это очень беспокоит. Причём для некоторых статей встречаются ссылки всех трёх видов: правильный урл, не sef урл и урл с другой категорией, но ведущий на ту же статью.
Сообщить модератору
0 Beliyadm отвечает 15.02.2010 15:09
В индекс может попасть лишь то, что встречается на самом сайте. При правильной структуре меню и прочего на сайте должны быть только лишь SEF ссылки. Без сеф и подобные ошибочные никоим образом не должны фигурировать, попробуйте отследить с каких страниц поисковики нашли их и дальше можно будет думать, что с этим делать. С описанной ситуацией не встречался ни разу, на форуме кто-то из коллег описывал подобную возможность, к сожалению не помню кто и где
Сообщить модератору
0 xlife отвечает 10.04.2010 17:54
разрешите дополнить скринами. http://forum.zvirec.com/хххххх П.С. как можно отследить, с каких страниц поисковики нашли эти ссылки
Сообщить модератору
0 Beliyadm отвечает 10.04.2010 18:02
Дополнить разрешаю, только по ссылке получил "Запрошенной темы не существует."
Сообщить модератору
0 Рома пишет нам 24.02.2010 18:35
Столкнулся с проблемой: на некторых компьютерах при включенном SEO искажаются ссылки, http:///home.html вместо http://mil.in.ua/home.html. Причем это только на некоторых компьютерах! Дома все номрально, на работе обрезаються ссылки :( В чем может быть проблема? Помогите пожалуйста :)
Сообщить модератору
0 Beliyadm отвечает 24.02.2010 18:42
работа SEF не зависит от используемого компьютера, операционной системы, браузера и прочих факторов, это работа только на стороне сервера, как сервер отдает адрес страницы - так она и будет выглядеть. Но на всякий случай проверьте при отключенных антивирусах\firewall на проблемных машинах, возможно они вызывают какие-либо блокировки, хотя мне о таких случаях неизвестно
Сообщить модератору
0 Рома отвечает 25.02.2010 01:56
Вот и я так думал :) но увы :( на работе не генерируются ссылки правильно :( На работе стоят и антивирусы и фаерволы.. отключить не могу :) права толлько у админов, а они злые :)
Сообщить модератору
0 Beliyadm отвечает 25.02.2010 02:53
Но это вообще как бы бредовая идея, я не могу себе представить настроек firewall который бы заставлял сервер неправильно отдавать данные...
Сообщить модератору
0 Ирина пишет нам 06.03.2010 06:25
А если страницы уже в индексе, то если включит mod_rewrite, то робот страницы не сможет найти, т.е. они же получаться на новом адресе?
Сообщить модератору
0 Beliyadm отвечает 06.03.2010 18:20
Именно так
Сообщить модератору
0 kalinka пишет нам 23.01.2012 22:25
Статья - супер! Спасибо, очень помогло!
Сообщить модератору

Недостаточно прав для комментирования