Различные статьи на тему Web-дизайн
Главная [index.html] :: Услуги :: Договор :: Заказ Для веб-мастера Скрипты Книги Статьи Коллекция аватор Шрифты Ссылки каталогов 1ps.ru Что такое ЧПУ? Это человекопонятное управление сайтом. То есть вместо ссылок вида http://site.ru/modules/newbb_plus/viewtopic.php?topic_id=53&forum=2 выдаются ссылки вида http://site.ru/tema123.html Во-первых, легче запомнить, во-вторых - колоссально упрощается работа с поисковыми системами и роботами, что намного важнее. Вы же хотите, чтобы Ваш сайт был на первых позициях? Заранее приношу извинения за стиль - пишу в состоянии крайнего раздражения, если не сказать - бешенства. Неделю назад я о ЧПУ знал только то, что, в принципе, это где-то есть и некоторые гуру способны это самое к сайту привернуть. Поскольку я считал это чем-то суперсложным и недоступным пядовому юзеру - я за ЧПУ и не хватался. Но пришла пора изменить мнение. Что потребуется для написания ЧПУ? 1.Наличие сайта на CMS. Тут речь пойдет о RunCMS, но в равной степени это применимо к любой CMS, принципы одни и те же. 2.Наличие поддержки mod_rewrite у Вашего хостера. Если не знаете, что это такое - просто напишите письмо в саппорт и спросите, поддерживает ли хостер mod_rewrite . Если нет - дальше можете не читать, но касается это в основном владельцев сайтов на бесплатных хостингах. Во всех остальных случаях просто попросите хостера включить mod_rewrite . 3.Крайне желательно наличие локального сервера на Вашем компьютере, ракомендую Денвер. В процессе работы будут возникать очень интересные, неожиданные и, главное, неприятные эффекты в огромных количествах, особенно поначалу, так что лучше не резать по живому, а работать в локали. Концепция ЧПУ. Ваш сайт, как и прежде, продолжает генерировать и обрабатывать устрашающие ссылки вроде http://site.ru/modules/newbb_plus/viewtopic.php?topic_id=53&forum=2 . Это неизменимо и так оно и останется. Но можно поставить функцию-перехватчик, которая перехватит такую ссылку, придаст ей приятный вид вроде http://site.ru/tema123.html и отправит ее дальше вместо оригинальной. И встанет во весь рост другая проблема - ссылка-то красивая, но такого файла в природе не существует. Стало быть, необходимо обратное преобразование. Система, наткнувшись на HTML-ссылку быстренько сверится со списком, раскодирует ее и отправит дальше, как будто ничего и не было. Вот и все. В принципе. теперь подробнее о том, как это работает. Берем оригинальную ссылку и разбираем ее на составные части. http://site.ru/modules/newbb_plus/viewtopic.php?topic_id=53&forum=2 http://site.ru - URL сайта /modules - каталог с модулями /newbb_plus - собственно модуль /viewtopic.php - имя файла topic_id=53 - переменная с цифровым значением 53 (абсолютно неважно, что она там обозначает) forum=2 - то же самое Нужно иметь в виду, что хотя чаще всего переменная - цифра или число, встречаются и текстовые значения. Но это так, к слову. Начинаем прикидывать, как может работать перехватчик таких ссылок. А вот как. Чтоб уж совсем не забивать Вам голову ненужными деталями, перейдем к готовому решению. В файле сайт/include/common.php в районе 44 строки находим if ($xoopsConfig['gzip_compression']) { ob_start('ob_gzhandler'); } else { ob_start(); } и заменяем на if ($xoopsConfig['gzip_compression']) { ob_start('ob_gzhandler'); } else { include_once(XOOPS_ROOT_PATH."/emulator.php"); ob_start(x_rewrite_url); } вроде бы все то же, но включается файл сайт/emulator.php , в котором и будут сидеть все правила для переименования ссылок. Такого файла в поставке сайта нет, его надо писать самому. Изначально он выглядит так: ничего особо сложного. Теперь берем простейший пример. Как там у нас выглядит ссылка на "Каталог ссылок"? http://viktolina.com/links_index.html ? Прописываем правила. Все. Готово. Если у Вас где-то на сайте была ссылка http://site.ru/links_index.html , теперь она примет вид http://site.ru/links.html Но дело в том, что ссылка-то есть, а файла такого нет. Нужна и процедура декодирования. В корне Вашего сайта есть файл .htaccess. Открываем, редактируем. RewriteEngine On //включение перезаписи адресов, должно стоять обязательно RewriteBase / Options +FollowSymlinks RewriteRule ^links.html /links_index.html [NC,L] Все, готово. Теперь работает преобразование и в ту, и в другую сторону. Вот с этого момента на Вас и посыплются глюки, причем в таких количествах, что поначалу тошно станет. Не бросайте затею, все не так сложно. Просто правил таких в итоге будет не меньше сотни, в зависимости от установленного числла модулей! С добавлением каждого проверенного правила число глюков будет неуклонно уменьшаться, пока не исчезнет совсем. Продолжение следует. В следующей части будет рассказано, как писать правила не только для простейших случаев.