Настройка ЧПУ с помощью .htaccess и 301 редирект с обычных урлов

Настройка ЧПУ с помощью .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>

Может быть позже добавлю описание что есть что в этих инструкциях и как оно работает..