Правильный редирект с числового значения на символьное

Sanu0074
На сайте с 31.08.2012
Offline
110
351

Здравствуйте.

Я хочу написать редирект на своем сайте (сделан на CodeIgniter), сейчас вид ссылок со статьями такой:

http://site.com/post/9999

а надо:

http://site.com/post/article_name

Каким бы образом правильно поменять данную структуру?

при этом же, надо посылать "HTTP/1.1 301 Moved Permanently"....

в htaccess наверно бесполезно что-то менять, т.к. заголовок поста хранится в БД, и чтобы перенаправить, сначала надо его достать из БД, а потом делать редирект пропустив заголовок через транслит. Предполагаю что для начала надо сделать отдельный столбец в бд с транслитом всех заголовков...

Очень нужны ваши советы! Благодарю за внимание.

[Удален]
#1
Sanu0074:
Предполагаю что для начала надо сделать отдельный столбец в бд с транслитом всех заголовков...

Если у вас не цмска, где чпу включаются одним кликом мыши, то это хороший вариант.

Алеандр
На сайте с 08.12.2010
Offline
205
#2

Если нет такого модуля или готовой возможности:

1) Добавляем поле в таблице со статьями "translitname", например. В той таблице, где ID и Name статьи.

2) Скриптиком пробегаемся по таблице, выбирая имена статей, и добавляя в новосозданное поле транслитерацию заголовка статьи.

3) В код добавления/редактирования статей встраиваем участок, который сразу будет на будущее выполнять эту операцию.

4) В файле, отвечающем за обработку GET запроса в виде цифр, добавляем код, который смотрит в базу и по GET['id'] получает translitname. В случае успеха - редирект 301 на /post/translit_name, неуспеха - на главную, например.

5) В этом же файле добавляем, что если GET уже translitname - выводим статью.

Второй вариант - .htaccess проверять, что GET цифровой и кидать в специальный файлик редиректа, который выполнит туже операцию - переведет id в translitname и сделает редирект на нужную статью уже по имени.

Sanu0074
На сайте с 31.08.2012
Offline
110
#3

Спасибо) буду пробовать)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий