Генерация ЧПУ без номеров ИД

  • Автор темы gasyoun
  • Дата начала
Статус
В этой теме нельзя размещать новые ответы.
G

gasyoun

Прохожие
Есть CMS, которая генерит ссылки вот такого вида

Для просмотра ссылки Войди или Зарегистрируйся

В логике работы системы, прописано, что по id из базы выбирается все все все что к ней относится.
Существует реврайт, который преобразует вот это

index.php?id=34&doc=nashi-predlozheniya

в это

nashi-predlozheniya-34.html

В принципе тут все просто - название страницы - это просто перепарсинный заголовок из русских
букв...Но проблема в том, что нужно убрать циферу 34 и оставить только название. Возможно ли это?

В настоящий момент правило таково
RewriteRule ^([-_a-zA-Z0-9]+)-([0-9]+).html$ index.php?id=$2&doc=$1
 
  • Заблокирован
  • #2
Конечно, возможно, при условии, что в таблице текстов есть поле, где хранится этот ЧПУ - "nashi-predlozheniya". Получается
^([-_a-zA-Z0-9]+)\.html$ index.php?doc=$1

И надо еще index.php подработать, чтобы он выбирал текст только этому параметру doc, а также в админке при сохранении контролировать, чтобы он был для текстов уникальным.
 
Скорее всего тебе надо будет:
Добавить в БД еще одно поле, в которое при создании (через админку) название новости будет преобразовано в транслит и попадать в БД.
Т.е. будет так:
34|nashi-predlozheniya|тут_как_и_по_дефолту_в_движке
Ну а после уже поправишь (изменишь) в скрипте чтобы выборка шла не по ID, а по тока что созданому тобой полю.
...
Тока смущает правило:
RewriteRule ^([-_a-zA-Z0-9]+)-([0-9]+).html$ index.php?id=$2&doc=$1
Если doc не учавствует, зачем его передавать скрипту. Может он все-таки учавствует? В смысле - и так есть возможность делать не по id а по doc?
 
Привет Цензор, не думал встретить тебя тут :)

Вообще-то ты наверное понял про какую CMS идет речь и этот вопрос задавал мой знакомый ;)

Вобщем вопрос решен, и ближе ответил господин Jameson.
Действительно я так и сделал...просто раньше выборка шла по id, а я щас добавил в таблицу с доками поле rewrite_name, в котором хранится имя линка такое, какое я сам захочу...например nashi_preservativi.html. Переписал класс по работе с документами, функцию по выводу сайта ну и естессно правила в реврайте.... все пучком теперь )) Только вот есть еще одна проблема... надо как то сделать, чтоб у меня для каждой ссылки был плэйсхолдер типа [link:12], который будет подставляться в ссылку типа
<a href="[link:12]">click</a> и соответственно при обработке шаблона вместо [link:12] будет подставляться РЕВРАЙТНОЕ имя, которое я придумал....а уже по реврайтному имени, будет получаться id :) во как!..
 
  • Заблокирован
  • #5
Я, признаться, не понял о какой CMS идет речь, но скажите мне вот что - а зачем вы все ссылки хотите ставить через редиректор? Это ведь плохо для поискового здоровья :)
 
Просто понимаешь, есть куча сайтов, сделаных на SSI и они достаточно долго существуют. Очень много поисковиков уже прочитали эти сайты и в том числе любимый Гугл... теперь встала задача перевести все эти сайта на CMS но самое важное - это СОХРАНИТЬ ИМЕНА ССЫЛОК....поэтому и началась эта затея.... Т.е если раньше была ссыла about_us.shtml она и должна быть сейчас....
 
2Jameson
Смотря что ты понимаещь под редиректором)
Юзер заходит по старой линке, а скрипт смотрит какой материал надо отдать.... все эти махинации невидны ни боту, ни юзеру... таким образом остаеться старая архитектура и старые странички...
 
Привет Цензор, не думал встретить тебя тут
Привет. Да вот, решил зарегится. =)

Вообще-то ты наверное понял про какую CMS идет речь
Если чесно - нет. Но еще удивился похожей структуре. А чего на овере не задали?

надо как то сделать, чтоб у меня для каждой ссылки был плэйсхолдер
Сделать простой модуль (по аналогии с каким-нить существующим), которому и передается значение, а он уже по этому значению сделает выборку (по ид запрашиваешь - получаешь транслитное имя) и вернет в ссылку. А там уже при клике сработает так как ты и переделал.

таким образом остаеться старая архитектура и старые странички...
Соберите старые ссылки и сопоставьте их с новыми. И редиректите (с заголовком 302). Через полгода уже такой редирект можете снять. Ну или как и собираетесь - оставив старые ссылки.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху