WWW.MOBILA.FARX.RU
 Веб-Мастеру
Псевдостатика (ModRewrite). Часть 2
 Погода

» Создание сайта
» Бесплатный хостинг
» Бесплатная почта
» Дизайн сайта
» Раскрутка сайта 1
» Раскрутка сайта 2
» Программирование
» База белых каталогов
» Статьи

 E-Money
» Электронные деньги
» WebMoney
» E-gold
» Liberty Reserve
» RuPay
» Обменные пункты
 Заработок

» Начинающим
» Компания DepositFiles
» Основные вопросы
» Спонсоры(САР)
» Серфинг и автосерфинг
» MLM проекты
» Инвестиции
» Веб-мастеру
» Букмекерские конторы
» Моментальные бонусы
» Введение в коммерцию
» Всё о коммерции
» Статьи о заработке
» Форумы о заработке

 Идеи бизнеса
» Часть 1
» Часть 2
» Часть 3
» Часть 4
» Часть 5
» Часть 6
» Часть 7
» Часть 8
» Часть 9
» Часть 10
» Часть 11
» Часть 12
 Реклама
Яндекс.Погода
 Реклама

В предыдущей части статьи мы рассмотрели основные принципы работы 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]

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

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

+-----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] выбираем тот модуль, который нам нужен и грузим его.

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

Дизайнер сайта: Лазаренко Виталий Сергеевич E-Mail:lazarenko-vitalik@xaker.ru ICQ: 397-116-997
Использование материалов сайта возможно только с разрешения администрации.

Все права защищены. WEBMSX.NAROD.RU - Работа в интернете © 2008
CY and PR Rambler's Top100 Рейтинг@Mail.ru