как уникализировать ЧПУ название объекта?

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
Например, отели могут иметь одинаковые названия. Сейчас объекты на ЧПУ, по названию транслитом. Думаю прибавлять автоматом при создании объекта его id. Но при создании еще нет, пока не было INSERT. Без запроса в БД можно как-то решить эту проблему?
Была мысль при выводе ссылок на объекты брать id, но тогда много гемора будет с переработкой htaccess и другого кода.
еще думал добавить временную метку. Но и так длинные ссылки, а тут еще длиннее будут, да и не красиво.
Можно еще что-то?
 
Можно еще что-то?
Можно перед публикацией запросить количество записей в базе SELECT COUNT и уже INSERT +1.
Тяжелый вариант если большая база, или писать куда то текущий id - тогда легко будет.
 
id + имя транслитом - один из самых простых вариантов.

Алгоритм добавления:
вставляешь чпу, в табличку с автоинкремент id, по чпу даже ключ не нужен, мы все выборки по id делаем и на уникальность пофиг.

Алгоритм выборки:
парсишь из запроса id и по нему дергаешь из базы url
если url запроса и из базы равны - отдаешь контент страницы
если разные - делаешь 301 или 302 редирект на url из базы (Это чтобы дублирования страниц под разными url избежать)

Всё!

Все остальные варианты сильно замороченные и тормознутые. Вон WP 404 страницу пару минут на большой базе обрабатывает...
 
id + имя транслитом - один из самых простых вариантов.

Алгоритм добавления:
вставляешь чпу, в табличку с автоинкремент id, по чпу даже ключ не нужен, мы все выборки по id делаем и на уникальность пофиг.

Алгоритм выборки:
парсишь из запроса id и по нему дергаешь из базы url
если url запроса и из базы равны - отдаешь контент страницы
если разные - делаешь 301 или 302 редирект на url из базы (Это чтобы дублирования страниц под разными url избежать)

Всё!

Все остальные варианты сильно замороченные и тормознутые. Вон WP 404 страницу пару минут на большой базе обрабатывает...
а id как добавлять при вставке?
Я только придумал:
1. получать последнюю строку из БД и добавлять ее id к ЧПУ
2. после вставки получать id сохраненный строки, и делать апдейт через конкатенацию. Бред, кажется :)
 
1 - при одновременном добавлении будут проблемы или надо лочить всю таблицу, что еще хуже.
2 - норм и настолько проще, что сложно будет накосячить.

3 - тоже, что и 2 но через процедуры без лишних запросов от php. Но их по прежнему не все шаред хостинги поддерживают и при дампе иногда о них забываешь.

4 Можно поле не апдейтить и добавлять id при селекте или после на php. Просадка производительности будет составлять наносекунды.
 
А почему не вставить в ЧПУ тогда дату/время. Или что-то типа хэша даты времени. Или вообще рандомно сгенереннной 3х символьной строки к наименованию ?
 
По времени - плохая идея, если file-cahce (типа PageSpeed Module) файлы будут бесконечно множится
почему не использовать md5() ... типа md5("$id:$title") - стандартное в таких ситуациях
по умолчанию 32 символа всегда длинной
если короче надо как на упомянутом топхотелс:
прим. $hash = substr(md5("$id:$title"), 0, 8);

мне-бы ваши проблемы
 
Самое простое и надёжное решение - это добавлять в урл айди отелей. Остальные варианты (даты, хэши дат и т.д.) замороченные и понятие ЧПУ к такому урлу применить будет проблематично.
 
Назад
Сверху