[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Web - программирование / .htaccess /

Псевдостатика (mod_rewrite). Часть 2

 В предыдущей части статьи мы рассмотрели основные принципы работы mod_rewrite. В этой статье будут рассмотрены общие случаи использования mod_rewrite и его возможностей.

            Как я уже говорил раньше, mod_rewrite используется для преобразования запросов к серверу вида http://site.net/?dir=general&s=53 на http://site.net/general/53/. Это преобразование выполняется с помощью простого правила записанного в .htaccess:

RewriteRule ^([A-Za-z]+)/([0-9]+)$ index.php?dir=$1&s=$2

Надеюсь, это все усвоили. Переходим к более сложным преобразованиям. Но для начала перечислю основные принципы при составлении правил для mod_rewrite:

  • Сначала идет название метода (способа) преобразования:
    • RewriteRule
    • RewriteCond
    • RewriteMap
    • Переменные среды apache
  • Потом само правило (Perl-совместимое регулярное выражение)
  • И в конце дополнительные параметры:
    • NCрегистронезависимо (без учета регистра символов)
    • OR – или, т.е. если это условие не выполняется, проверяется следующее за ним.
    • L – проверка на символичность ссылки
    • U проверка существования URL
    • F проверка существования файла

Mod_rewrite предоставляет еще очень много чего интересного, например он может определять тип браузера и в зависимости от него выдавать нужную страницу:

RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*
RewriteRule  ^/$                 /homepage.max.html  [L]

RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
RewriteRule  ^/$                
/homepage.min.html  [L]
RewriteRule  ^/$                 /homepage.std.html  [L]

            Для написания своего правила нужно немного:

  1. Придумать, как должна выглядеть строка запроса в браузере
  2. Реализовать это.

Делается это очень просто, например, у вас есть сайт, на котором вы что-либо продаете. И вам и вашим клиентам было бы гораздо удобнее запоминать названия каталогов сайта, нежели переменные и их параметры. Поэтому предположим, что ваш будущий сайт должен иметь такую структуру:

+-----example.com
       
|
       |------------------articles/
       |                             |------+-category1/
       |                             |------+-category2/
       |
       |------------------hardware/
       |                             |------+-hdd/
       |                             |--------cd-rw/
       |                             |                |--------produkt1/
       |                             |                |-------- produkt2/
       |                             |------+-……….
       |                             |
       |                             |------+-other/
       |
       |------------------about/

Но создавать все эти директории не обязательно, проще воспользоваться mod_rewrite. Для этого в корне сайта создаем файл .htaccess и в него пишем следующее:

# Включаем возможности mod_rewrite
RewriteEngine On

# Создаем правила для разделов.
# Каждое ниже перечисленное правило строгое и в нем проверяется
# тип переменных, это нужно для защиты сайта от взлома

# Для разделов (категорий)
RewriteRule ^([A-Za-z]+)/$ index.php?module=$1

# Для разделов и подразделов
RewriteRule ^([A-Za-z]+)/([A-Za-z0-9]+)/$ index.php?module=$1&category=$2

# Для разделов, подразделов и идентификатора
RewriteRule ^([A-Za-z]+)/([A-Za-z0-9]+)/([A-Za-z0-9.]+)$ index.php?module=$1&category=$2&id=$3

Теперь при запросах вида http://example.com/articles/category1/article12 будет вызываться http://example.com/index.php?module=articles&category=category1&id=article12

      Но можно поступить и по-другому:

# Включаем возможности mod_rewrite
RewriteEngine On
# Создаем правила для разделов
RewriteRule ^(.*)$ index.php [L,QSA]

В этом случае все входящие параметры должен будет обрабатывать index.php. Делается это так:

<?php
/* Функция для очистки массива от пустых строк */
function Clear_array($array)
{
$c=sizeof($array);
$tmp_array=array();
for($i=0; $i<$c; $i++)
{
if (!(trim($array[$i])==""))
{
$tmp_array[]=$array[$i];
}
}
return $tmp_array;
}

$param=$_SERVER['REQUEST_URI'];
$params=explode("/",$param);
$params=Clear_array($params);
?>

            И в результате выполнения скрипта мы получим все параметры, полученные при разбиении запроса. Например, запрос:

http://example.com/articles/category1/article12.htm

после обработки скриптом в массиве $params  будет содержаться следующее:

Array
(
    [0] => articles
    [1] => category1
    [2] => 12.htm
)

А дальше уже все просто, в зависимости от  параметра [0] выбираем тот модуль, который нам нужен и грузим его.

Продолжение следует. В следуещей части будут рассмотренны более конкретные случаи.

Если у вас есть вопросы или дополнения, или вы просто с чем-то не согласны пишите мне на gid87@mail.ru и заходите на мой сайт http://wm-help.net/

 

Автор: Беляев Александр aka gid

Сайт Автора: wm-help.net

E-mail Автора: gid87@mail.ru

Источник: http://wm-help.net/




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Web - программирование / .htaccess /

Защита include-модулей от несанкционированного доступа на сайте
14-11-2009   

Когда Вы пишите простенькую гостевую книгу, или счетчик, прибавляющий 1, к предыдущему значению, Вы, как правило, используете один-два файла не связанные друг с другом. Но однажды возникает необходимость разделять программу на несколько частей, причем одна часть вызывается другой... подробнее

Кол. просмотров: общее - 3228 сегодня - 0

Псевдостатика (mod_rewrite). Часть 2
14-11-2009   

В предыдущей части статьи мы рассмотрели основные принципы работы mod_rewrite. В этой статье будут рассмотрены общие случаи использования mod_rewrite и его возможностей... подробнее

Кол. просмотров: общее - 3116 сегодня - 0

Псевдостатика (mod_rewrite). Часть 1
14-11-2009   

Эта статья была написана мной во время разработки нового движка для сайта. Как и все пользователи интернета, я с некоторого времени (примерно год назад) стал замечать, что все больше и больше популярных сайтов переходят от url вида http://site.net?pid=general&id=5&s=98465 на псевдостатику или на ЧПУ (Человеку Понятный УРЛ)... подробнее

Кол. просмотров: общее - 3021 сегодня - 0

Файл .htaccess на службе у seo-оптимизатора
14-11-2009   

Во многих информационных материалах, которые мне когда-либо приходилось читать об этом служебном файле веб-сервера Apache, говорилось, в основном, о том, как правильно сконфигурировать сервер для качественной работы сайта... подробнее

Кол. просмотров: общее - 3489 сегодня - 0

Красивый URL
05-04-2009   

Многие начинающие веб-мастера встречаются с проблемой обработки длинных адресов в строке браузера. Например, у вас есть динамическая страница, которая обрабатывает запросы на скачивание файлов... подробнее

Кол. просмотров: общее - 3724 сегодня - 1



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects