ЧПУ с помощью mod_rewrite, как правильно сделать?

MarkoPo MarkoPo
04.04.2012
Всем привет. Хочу сделать на сайте ЧПУ, из-за не большого опыта в сайтостроении не получается сделать то что хочу.

Вот то, что у меня в файле htaccess.
RewriteEngine On
RewriteRule ^view_films.php?cat=(.*)$ /films/(.*).html$ [R=301, L]
RewriteRule ^films/([^/]*)\.html$ /view_films.php?cat=$1 [L]

Подскажите, пожалуйста, как правильно реализовать редирект со старых ссылок на новые. И как можно заменить id страницы на текст, который берётся со статьи. Тобишь сейчас ссылки вот такого рода domen.ru/film/12.html, а хотелось бы domen.ru/film/devushka-s-tatuirovkoi-drakona.html

Стоит ли менять айди на текст?
Дополнено (1). Хах, ЧПУ - человеко-понятные урлы да и з самого вопроса понятно, что не о станке идёт речь.
Дополнено (2). vza, спасибо большое за ответ.
А по поводу перенаправления в htaccess, то вот, что я имел ввиду:
301 редирект или, так называемое постоянное перенаправление - говорит о том, что страница поменяла адрес или URL и перенаправляет на новую страницу. Если у вас на сайте была проиндексированная ПС страница, а вы поменяли ее адрес - в обязательном порядке сделайте 301 редирект на новую страницу. При 301 редиректе старая страница не индексируется, а вместо нее «подставляется» новая.

RewriteEngine on
Redirect 301 /old-page http://ваш-урл. Ру/new-page
Меня интересовало, сам редирект будет происходить если человек введёт старый адрес или ему выбьет ошибку 404? Например как с vk.com если ввести vkontakte.ru, то перекидывает человека на новый адрес, тобишь vk.com.

maxutka (макс поляков maxutka (макс поляков
04.04.2012
Эээмм… ЧПУ? Числовое программное управление? С помощью сайта станком управлять нужно?

Дополнение #1
да я просто пошутить хотел)

vza vza
04.04.2012
Привет.

Ответ на вопрос, как можно заменить id страницы на текст:
Если рассматривать ссылку без RewriteEngine, то она будет, например, такая - domen.ru/view_films.php?cat=12
Если сделать так - domen.ru/view_films.php?cat=devushka-s-tatuirovkoi-drakona, то будет, как вам хотчется - domen.ru/films/devushka-s-tatuirovkoi-drakona.html (без изменений в. Htaccess)

Если вы поменяете id на текст, и ваш сайт уже проиндексирован поисковиками, то посетители, пришедшие по старым ссылкам, конечно же не увидят нужную страницу. К сожалению, не знаю, как в таком случае можно сделать редирект посредством. Htaccess (если это осуществимо, то было бы интересно узнать).
С помощью php можно сделать так, но не гарантирую, что такое решение самое лучшее (надеюсь у вас MySql):

// не тестировал - могут быть ошибки
// предполагается, что соединение с БД одно и оно уже установлено
if (isset($_GET['cat']) && $_GET['cat'] ≠= "")
{
   $cat = mysql_real_escape_string($_GET['cat']);
   if (is_int($cat. {
       $q = mysql_query ("SELECT имя_поля_с_названиями_фильмов FROM имя_таблицы WHERE id='".$cat."'");
       if (mysql_num_rows($q)==1) {
           $arr = mysql_fetch_row($q);
           header ('Location: http://domen.ru/films/'.$arr[0]); // для такого перенаправления этот код нужно поместить в самое начало сайта.
       }
   }
}

Пока писал придумал, как через. Htaccess можно сделать - добавлять php скриптом строки типа:
redirect http://domen.ru/films/12.html http://domen.ru/films/devushka-s-tatuirovkoi-drakona.html
Получится, что первый раз перенаправит скрипт, а последующие разы. Htaccess =)

Желаю удачи =)

Добавить комментарий | Похожие обсуждения

Вопросы и ответы по Вконтакте
Вопросы и ответы

Популярные вопросы и ответы о социальной сети www.vkontakte.ru (vk.com)