В предыдущей части статьи мы рассмотрели основные принципы работы
mod_rewrite. В этой статье
будут рассмотрены общие случаи использования mod_rewrite
и его возможностей.
Как я уже говорил раньше, mod_rewrite
используется для преобразования запросов к серверу вида
на . Это
преобразование выполняется с помощью простого правила записанного в .htaccess:
OR
– или, т.е. если это условие не выполняется, проверяется следующее за
ним.
L – проверка на символичность
ссылки
U –
проверка существования URL
F –
проверка существования файла
Mod_rewrite
предоставляет еще очень много чего интересного, например он может
определять тип браузера и в зависимости от него выдавать нужную страницу:
Придумать, как должна выглядеть строка запроса в браузере
Реализовать это.
Делается это очень просто, например, у вас есть
сайт, на котором вы что-либо продаете. И вам и вашим клиентам было бы гораздо
удобнее запоминать названия каталогов сайта, нежели переменные и их параметры.
Поэтому предположим, что ваш будущий сайт должен иметь такую структуру:
Но создавать все эти директории не обязательно,
проще воспользоваться 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;
}
Когда Вы пишите простенькую гостевую книгу, или счетчик, прибавляющий 1, к предыдущему значению, Вы, как правило, используете один-два файла не связанные друг с другом. Но однажды возникает необходимость разделять программу на несколько частей, причем одна часть вызывается другой... подробнее
В предыдущей части статьи мы рассмотрели основные принципы работы mod_rewrite. В этой статье будут рассмотрены общие случаи использования mod_rewrite и его возможностей... подробнее
Эта статья была написана мной во время разработки нового движка для сайта.
Как и все пользователи интернета, я с некоторого времени (примерно год назад) стал замечать, что все больше и больше популярных сайтов переходят от url вида http://site.net?pid=general&id=5&s=98465 на псевдостатику или на ЧПУ (Человеку Понятный УРЛ)... подробнее
Во многих информационных материалах, которые мне когда-либо приходилось читать об этом служебном файле веб-сервера Apache, говорилось, в основном, о том, как правильно сконфигурировать сервер для качественной работы сайта... подробнее
Многие начинающие веб-мастера встречаются с проблемой обработки длинных адресов в строке браузера. Например, у вас есть динамическая страница, которая обрабатывает запросы на скачивание файлов... подробнее