Навигация
Главная
Новости портала
Форумы портала

Наши клиенты
Гостевая книга
Отзывы клиентов

Каталог сайтов
Поиск по сайту
Карта сайта

Whois сервис
Web инструменты
Файловый архив
Статистика





Rambler's Top100

Участник каталога WebMoney MegaStock

Тиц Яндекс и PR Google



Анти спам

RSS информер

службы мониторинга серверов

Наша кнопка

Справочные материалы

Изучаем Apache
Подробное описание функций mode_rewrite

Модуль mod_rewrite. Часть 4.

В этой публикации мы затронем те директивы, которые не успели охватить в предыдущих частях. Эти директивы не поддаются определению на уровне директорий. Это означает то, что вы должны иметь доступ к файлу конфигурации веб сервера Apache (httpd.conf).

Обычно такой доступ имеют пользователи «root» или администратор сервера.
 
Если вы хотите вести логи всех операций, выполненных с помощью mod_rewrite, можно активировать это с помощью следующей записи:
 
RewriteLog /usr/local/apache/logs/mod_rewrite_logRewriteLogLevel 1
Эту строку нужно вписать в «Раздел 2:
Конфигурация основного сервера» в файле httpd.conf, а не в .htaccess!

Все манипуляции, произведенные mod_rewrite будут записываться в этот файл. Имя лог файла может быть любым.
Вы можете указать абсолютный или относительный (относительно ServerRoot) путь к файлу.
Если вы хотите вести разные лог файлы для различных виртуальных хостов, то нужно ввести изменения в «Раздел 3:
Виртуальные сервера», например так:
 
ServerAdmin
webmaster@yourdomain.com
DocumentRoot /usr/www/htdocs/yourdomain
ServerName
yourdomain.com RewriteLog /usr/apache/logs/yourdomain_mod_rewrite_logRewriteLogLevel 1

RewriteLogLevel может быть определен в пределах диапазона от 1 до 8. Обычно достаточно первого уровня.
Более высокие уровни используются для деббагинга.
Другая директива, которая является очень удобной в целях клоакинга – это так называемая карта перезаписи.
Это – файлы, содержащие пары ключ/значение, обычно в формате текстового файла:

cde2c920.infoseek.com
spider 205.226.201.32
spider cde2c923.infoseek.com
spider 205.226.201.35
spider cde2c981.infoseek.com
spider 205.226.201.129
spider cde2cb23.infoseek.com
spider 205.226.203.35 spider

Ключи, как вы видите, имена хостов или IP адреса.
В этом простеньком примере значение всегда одно – «spider».
Естественно, в реальном файле значения будут другие.
Эта директива может быть записана в второй («Конфигурация основного сервера») или третий («Виртуальные сервера») раздел файла httpd.conf:
 
RewriteMap
botBase txt:/www/yourdomain/spiderspy.txt

«Карта перезаписи» возымеет эффект на весь сервер.
Также, в файл .htaccess записывается:

RewriteCond ${botBase:%{REMOTE_HOST}} =spider [OR]
RewriteCond ${botBase:%{REMOTE_ADDR}} =spider
RewriteRule ^(.*).htm$ $1.htm [L]
RewriteRule ^.*.htm$ index.html [L]


Данные условия будут производить системную проверку: произведен ли запрос поисковиком. С этой целью производится поиск по файлу spiderspy.txt. Если ключ найден, будет возвращено значение «spider», а «условие» будет являться истинным.
Затем выполняется первый RewriteRule.
Это означает то, что запрашиваемая «.htm» страница будет отдана поисковику.
Переменная $1 равна части в круглых скобках «^(. *).htm$», то есть имя файла останется тем же самым.
Если же URL вызван обычным посетителем, то применяется второе «правило»: пользователь будет перенаправлен на страницу «index.html».
Поскольку «.htm» страницы будут читаться только «пауками», они могут быть оптимизированы соответственно для поисковых серверов.
Вы можете также использовать файл в формате «dbm» вместо обычного текстового файла. Бинарный формат данных позволяет ускорить поиск, который является особенно важным, если вы работаете с очень большими списками поисковиков.
Пример, данный выше, предлагает простые функциональные возможности клоакинга. Все обычные посетители будут всегда переадресовываться к странице «index.html» и не будет вестись никаких логов файлов вне логов mod_rewrite.
Можно заменить несколько строчек кода php (perl и т.д.) в ваших приложениях, используя всего одну-две строки mod_rewrite.
Последний пример проиллюстрирует это более подробно.
Цель – показать посетителям «фото дня».
Посетитель, кликнувший по ссылке http://yoursite.com/pic.html увидит лучшую фотографию или картинку дня, и так каждый день.
Мы будем работать с серверными переменными: TIME_MON TIME_DAY

Поместим в файл .htaccess одну единственную строку:
 
RewriteRule ^pic.html$ pic-%{TIME_MON}-%{TIME_DAY}.html

Запрашиваемый URL будет перезаписан, например:
pic-08-28.html pic-08-29.html pic-08-30.html и так далее.
Теперь, все что вы должны сделать – это единожды загрузить файлы с соответсвующими именами и забыть о ежедневном обновлении ссылки.
Переменные времени также могут использоваться для другой периодичности.

Это был последний пример в серии публикаций о замечательном модуле mod_rewrite.
Естественно невозможно было затронуть все нюансы, директивы, переменные и т.д. в данной публикации, целью было другое – дать общее представление и понимание основ, и так сказать «ввести в курс дела»...

Дата публикации: 27.04.2006
Прочитано: 3075 раз


Дополнительно на данную тему
Модуль mod_rewrite. Часть 1.Модуль mod_rewrite. Часть 1.
Модуль mod_rewrite. Часть 2.Модуль mod_rewrite. Часть 2.
Модуль mod_rewrite. Часть 3.Модуль mod_rewrite. Часть 3.
[ Назад | Начало | Наверх ]
Закладки
Информация


Добро пожаловать,
Гость

Регистрация или вход
Потеряли пароль?

  Ваш логин  
  Ваш пароль  
  Код  
  

Сейчас онлайн
Пользователей: 0
Гостей: 5
БотовБотов: 0
Всего: 5
Наши проекты
Поиск работы и подбор персонала