Использование 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 # добавили |
|
...
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 перенаправить запрос.
