Настройка ЧПУ с помощью .htaccess и 301 редирект с обычных урлов
Попался мне старенький php сайт на самописном движке. Требовалось настроить простые улы с гет параметрами на более приятные, как для пользователей, так и для поисковиков, ЧПУ урлы.
На сайте были ссылки вида:
breakingcode.ru/index.php?page=news
breakingcode.ru/index.php?page=news&cat=category (1)
breakingcode.ru/index.php?page=news&cat=category&id=str
Нужно преобразовать их в ссылки такого вида:
breakingcode.ru/news
breakingcode.ru/news/category (2)
breakingcode.ru/news/category/str
Обязательно нужно, чтобы с ссылок вида (1) шел 301 редирект на ссылки вида (2).
Делается это при помощи файла .htaccess лежащего в корне сайта. Вот полностью инструкции для трех видов таких url:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} ^page=([a-z0-9-]+)$ RewriteCond %{QUERY_STRING} !htaccess=Y RewriteRule ^index\.php$ /%1? [R=301,L] RewriteCond %{QUERY_STRING} ^page=([a-z0-9-]+)&cat=([a-z0-9-]+)$ RewriteCond %{QUERY_STRING} !htaccess=Y RewriteRule ^index\.php$ /%1/%2? [R=301,L] RewriteCond %{QUERY_STRING} ^page=([a-z0-9-]+)&cat=([a-z0-9-]+)&id=([a-z0-9-]+)$ RewriteCond %{QUERY_STRING} !htaccess=Y RewriteRule ^index\.php$ /%1/%2/%3? [R=301,L] RewriteRule ^([a-z0-9-]+)?$ index.php?page=$1&htaccess=Y [NC,L,QSA] RewriteRule ^([a-z0-9-]+)\/([a-z0-9-]+)?$ index.php?page=$1&cat=$2&htaccess=Y [NC,L,QSA] RewriteRule ^([a-z0-9-]+)\/([a-z0-9-]+)\/([a-z0-9-]+)?$ index.php?page=$1&cat=$2&id=$3&htaccess=Y [NC,L,QSA] </IfModule>
Может быть позже добавлю описание что есть что в этих инструкциях и как оно работает..