Модуль сервера Apache mod_rewrite и его применение для сайта на php

Модуль mod_rewrite это один из модулей сервера Apache на котором, кстати базируется наш локальный сервер Denwer. Этот модуль может выполнять массу полезных функций. Чтобы запустить его в работу необходимо прописать несколько строк в файле .htaccess, который находится в корне любого сайта. Наш проект также содержит такой файл, где уже есть небольшая запись DirectoryIndex index.php, котрая определяет индекснуюдиректорию сайта.

Для запуска модуля mod_rewrite необходимо добавить в файл .htaccess следующую запись:

# Запуск mod_rewrite
RewriteEngine on
Options +FollowSymlinks
RewriteBase /

Не будем вдаваться в объяснения принципов работы модуля сервера Apache mod_rewrite. При надобности в Интернете можно найти мануалы по этому поводу. А начнем с того, что динамический сайт заведомо содержит динамические адреса своих страниц с различными значками типа "?", "&", которые совершенно не понимают многие поисковые системы. Если новенький сайт на php оставить, как есть с динамическими ссылками страниц, то многие поисковые системы откажутся его индексировать напрочь. Не будет проиндексирована даже главная страница такого сайта. И таких поисковиков немало. Например Rambler, Mail. А эти поисковики вносят приличную лепту в посещаемость сайта. Кроме того, если сайт уже будет индексирован другими поисковыми системами, котрые понимают динамические адреса, то при переводе их на статические, будут потеряны многие страницы из старого индекса, которые уже посещаются и которые уже где-то фигурируют в сети. Где-же выход? Выход в правильном использовании модуля mod_rewrite. Этот модуль позволяет не только преобразовывать динамические адреса страниц сайта в статические, но и дает возможность перехода по старым динамическим адресам, если таковые существовали, посетителям и поисковым ботам.

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

Ссылка на главную страницу будет иметь вид index.html вместо index.php. Ссылка на первый раздел первой рубрики будет http://mysitephp.ru/rub1_part1.html, тоесть фактически, как будто это вообще статический сайт. Поисковый робот в этом случае ни слухом ни нюхом не поймет, что за такого типа ссылками могут скрываться php скрипты. И сайту в этом сдучае будет только плюс.

Запись в файле .htaccess будет иметь вид:

# Внутренние преобразования статических URL в динамические
RewriteRule ^(.*)index.html$ index.php [L]
RewriteRule ^(.*).html$ index.php?page=$1 [L]

Как это работает? Первое правило RewriteRule ^(.*)index.html$ index.php [L] преобразует статическую ссылку на главную страницу index.html в динамическую index.php. Второе правило преобразует адрес с расширением .html в динамический типа index.php?page. Тоесть если на входе ссылка

http://mysitephp.ru/rub1_part1.html
то она будет преобразована в
http://mysitephp.ru/index.php?page=rub1_part1

Теперь остается только откорректировать скрипт формирования меню первой рубрики. Он будет иметь вид представленный ниже:

<?php

// Формирователь меню
$menu = @file($rubric1_menu);
$lines = count($menu);
for ($i = 0; $i < $lines; $i++)
{
list($menu_link,$menu_name,$menu_title)=explode("::", $menu[$i]);
if($page == rub1_part1 and $i == 0) {$refcolor = "style='color:#cc0000'";}
elseif($page == rub1_part2 and $i == 1) {$refcolor = "style='color:#cc0000'";}
elseif($page == rub1_part3 and $i == 2) {$refcolor = "style='color:#cc0000'";}
else {$refcolor = "";}
$rubric1.="<li><a ".$refcolor." title='".$menu_title."' href='".$turl."/".$menu_link.".html"."'>".$menu_name."</a></li>";
}

?>

После обновления скрипта и файла .htaccess можно запустить сервер, набрать в адресной строке браузера mysiephp.ru и на открывшейся странице пройтись по уже статическим ссылкам меню первой рубрики.

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

Перейти и растаять в своей любимой социалке