| ||
Построение сайта по единому шаблону. Часть 3Это третье логическое продолжение публикаций "Практическое применение PERL-скриптов и "Построение сайта по единому шаблону, часть 2" Если вы создали динамический сайт, то скорее всего адреса страниц выглядят не самым лучшим образом. Я бы сказал очень недружественно по отношению к пользователю. Напомню, в предыдущих статьях получен следующий результат: дизайн вашего сайта описан в одном файле-шаблоне, в который, в необходимые места вставляется информация из других страниц в зависимости от строки запроса URL. Адреса Ваших страниц при этом выглядят следующим образом: "http://my.site/shablon.shtml?page.htm" или "http://my.site/?page" если файлом шаблона является индексный файл, а расширение ".htm" вы автоматически добавляете ко всем вставляемым страницам. Еще более недружественным является вариант, часто встречающийся в интернете: "index.php?page=27". Согласитесь, что намного приятней наблюдать и набирать адрес: "http://my.site/page.htm" нежели "http://my.site/?page.htm", тем более запомнить к чему относится "http://my.site/index.php?page=27". Я хочу сказать, что адрес страницы сам по себе должен нести смысловую нагрузку, быть интуитивно понятным посетителю Вашего сайта. К примеру, адрес "http://my.site/photo/cars/bmw/z8" более чем красноречиво говорит куда Вы попадете. Выход из создавшейся ситуации есть. У вэб-сервера Apache есть модуль "mod_rewrite". И некоторыми из его возможностей мы и воспользуемся. Для начала необходимо убедится, что данный модуль используется на Вашем сервере. Если вы используете PHP то просто выполните скрипт <? phpinfo(); ?> и убедитесь что среди загруженных модулей есть mod_rewrite. В противном случае уточните возможность использования этого модуля у администратора хостинга, где Вы держите сайт. Далее в файл .htaccess добавляем следующие инструкции: Разберем инструкции: Итак, пол дела сделано, все запросы перенаправляются одному файлу, и в нашем случае это файл-шаблон. Осталось только привести пример обработки запроса, чтобы Вы могли воспользоваться всем выше описанным. Магический код в файле-шаблоне, пример на PHP:
В первой строке производим проверку наличия запрашиваемого файла, если его нет, то переменной имени файла присваевается имя 404.htm (сообшение о 404-ой ошибке, файл не найден). В противном случае во второй строке переменной присваевается имя запрашиваемого файла. В третьей строке в файл-шаблон вставляется запрашиваемый документ, если он найден, либо 404 страничка в случае ошибки. Вот и все. Теперь при запросе страницы "http://my.site/links.htm", она будет автоматически вставлена в файл index.php, который в нашем случае является файлом-шаблоном. Но сразу оговорюсь,
что приведенный фрагмент кода лишь демонстрация работы предложенного метода.
В частности, необходимо избежать рекруссии.
То есть если пользователь введет безобидный на первый взгляд адрес "http://my.site/index.php".
Произойдет вставка файла-шаблона самого в себя, вставленный фрагмент опять вставит себя и так до бесконечности.
Чтобы избежать этого необходимо произвести проверку, не является ли запрашиваемый файл нашим скриптом (пример на PHP): Если же для создания своего динамического сайта Вы используете базы данных MySQL, то код обработки URL будет совершенно иной. Его обсуждение выходит за рамки данной статьи. Действие директив модуля "mod_rewrite" распространяется и на все вложенные директории, начиная с той в в которой находится файл .htaccess.
То есть если он лежит в корне сервера, то распространяет свое влияние на весь сервер.
И чтобы, к примеру, исключить папку "stats" от обработки через наш файл-шаблон необходимо модернизировать .htaccess следующим образом: В статье не рассмотрены все варианты использования модуля "mod_rewrite", которые не ограничиваются вышеописанным в статье. За дополнительной информацией необходимо обратиться к документации вэб-сервера APACHE. Домашняя страница автора: http://info.net.ru/
| ||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |