Использование ModRewrite.


Мои наблюдения в течение трёх месяцев показали, что динамические страницы с адресом такого вида: http://www.iwork.com.ua/tag.php?menuidx=lmenu&itemidx=item9 нормально индексируются поисковыми системами (имею в виду яндекс и гугл). Но для тех, кто уверен, что проблема не индексации именно в этом или же не желающих видеть в адресной строке такой длинный адрес, решил написать статью в помощь.

Первое что нужно сделать, это проверить что модуль ModRewrite, действительно включён. Для этого в конфигурационном файле httpd.conf сервера Apache, найдём строчки:

AddModule mod_rewrite.c
и
LoadModule rewrite_module modules/mod_rewrite.so

Для того чтоб их увидеть, нужно открыть файл httpd.conf в любом текстовом редакторе. Перед этими строчками не должно стоять знака #, если он там есть уберите его, сохраните изменения и перезагрузите сервер. Если у вас нет доступа к файлу httpd.conf попросите у хостера включить этот модуль.

Дальше включаем ModRewrite для определённого сайта. Делаем это прописывая в файле .htaccess (находится в корне сайта) такие строки:

order allow, deny
allow from all
Options -Indexes
RewriteEngine On # добавили
Если этого файла нету, создать его в текстовом редакторе и помесить в корневую директорию сайта. Ежели он уже есть, сделайте резервную копию первоначального вида до изменения (во избежания всяческих казусов. Всё "рерайт" включили, теперь нужно записать правило, по которому сервер будет обрабатывать запросы типа: http://localhost/index.php?menu1=first&menu2=2&menu3=3 &menu4=4 в такие http://localhost/first/2/3/4 Правило это вписывается в файл .htaccess ниже строки RewriteEngine On
...
RewriteEngine On
# добавили
RewriteRule ^([a-z]+)/([0-9]*)/([0-9]*)/([0-9]*)/$
index.php?munu1=$1&menu2=$2&menu3=$3&menu4=$4

Тут строка ^([a-z]+)/([0-9]*)/([0-9]*)/([0-9]*)/$ задаёт новый формат запроса /first/2/3/4 (эта строка называется Regular Expression - формат для записи шаблонов текста и поиска по ниму). Переменные $1, $2, $3, $4 - пронумерованные результаты поиска в строке запроса.
index.php?menu1=$1&menu2=$2&menu3=$3&menu4=$4 эта строка запроса осталась прежней, мы её использовали внутри сервера, но пользователь сайта уже не увидит длинного и корявого адреса.

Для более удобной отладки нужно использовать [R] в конце строки запроса.
index.php?first=$1&menu2=$2&menu3=$3&menu4=$4 [R] Тогда после запроса first/2/3/4 в адресной строке мы увидим наш старый URL /index.php?menu1=first&menu2=2&menu3=3&menu4=4.
Эта [R] даёт команду ModRewrite перенаправить запрос.

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