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

Тема в разделе "Не достойно креатива", создана пользователем gasyoun, 7 авг 2007.

Статус темы:
Закрыта.
  1. gasyoun

    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. Jameson

    Jameson Читатель

    Заблокирован
    Регистр.:
    25 июн 2007
    Сообщения:
    406
    Симпатии:
    92
    Конечно, возможно, при условии, что в таблице текстов есть поле, где хранится этот ЧПУ - "nashi-predlozheniya". Получается
    ^([-_a-zA-Z0-9]+)\.html$ index.php?doc=$1

    И надо еще index.php подработать, чтобы он выбирал текст только этому параметру doc, а также в админке при сохранении контролировать, чтобы он был для текстов уникальным.
     
  3. censored!

    censored!

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

    Arcanum Создатель

    Регистр.:
    30 мар 2006
    Сообщения:
    34
    Симпатии:
    11
    Привет Цензор, не думал встретить тебя тут :)

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

    Вобщем вопрос решен, и ближе ответил господин Jameson.
    Действительно я так и сделал...просто раньше выборка шла по id, а я щас добавил в таблицу с доками поле rewrite_name, в котором хранится имя линка такое, какое я сам захочу...например nashi_preservativi.html. Переписал класс по работе с документами, функцию по выводу сайта ну и естессно правила в реврайте.... все пучком теперь )) Только вот есть еще одна проблема... надо как то сделать, чтоб у меня для каждой ссылки был плэйсхолдер типа [link:12], который будет подставляться в ссылку типа
    <a href="[link:12]">click</a> и соответственно при обработке шаблона вместо [link:12] будет подставляться РЕВРАЙТНОЕ имя, которое я придумал....а уже по реврайтному имени, будет получаться id :) во как!..
     
  5. Jameson

    Jameson Читатель

    Заблокирован
    Регистр.:
    25 июн 2007
    Сообщения:
    406
    Симпатии:
    92
    Я, признаться, не понял о какой CMS идет речь, но скажите мне вот что - а зачем вы все ссылки хотите ставить через редиректор? Это ведь плохо для поискового здоровья :)
     
  6. Arcanum

    Arcanum Создатель

    Регистр.:
    30 мар 2006
    Сообщения:
    34
    Симпатии:
    11
    Просто понимаешь, есть куча сайтов, сделаных на SSI и они достаточно долго существуют. Очень много поисковиков уже прочитали эти сайты и в том числе любимый Гугл... теперь встала задача перевести все эти сайта на CMS но самое важное - это СОХРАНИТЬ ИМЕНА ССЫЛОК....поэтому и началась эта затея.... Т.е если раньше была ссыла about_us.shtml она и должна быть сейчас....
     
  7. lobzik

    lobzik

    Регистр.:
    8 авг 2006
    Сообщения:
    311
    Симпатии:
    49
    2Jameson
    Смотря что ты понимаещь под редиректором)
    Юзер заходит по старой линке, а скрипт смотрит какой материал надо отдать.... все эти махинации невидны ни боту, ни юзеру... таким образом остаеться старая архитектура и старые странички...
     
  8. censored!

    censored!

    Регистр.:
    3 авг 2007
    Сообщения:
    293
    Симпатии:
    106
    Привет. Да вот, решил зарегится. =)

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

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

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