Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > ЧПУ для сайта


Автор: fics 23.10.2013, 10:08
Здравствуйте. Еще никогда не приходилось работать с чпу. И поэтому возник вопрос - возможно ли url вида
Код

http://myshop.ru/?page=product&prodid=549


превратить в 
Код

http://myshop.ru/product/назнвание продукта по id


то есть не так
Код

http://myshop.ru/product/549

а вместь id = 549 поставить конкретное название продукта подставить из БД

Автор: baldina 23.10.2013, 10:40
на уровне mod_rewrite сложно:
1. надо загнать все названия из БД в регулярное выражение
2. названия, возможно, не уникальны

если же названия уникальны (являются естественным ключом в таблице), просто используйте их вместо id

Автор: fics 23.10.2013, 10:49
Цитата(baldina @  23.10.2013,  10:40 Найти цитируемый пост)
просто используйте их вместо id


Ну так это прийдется еще в самих исходинках php менять запросы не по ID а по названию, но этого не хотелось бы делать 

Автор: baldina 23.10.2013, 11:16
он хотел назвать её Глафирой, но что бы откликалась на Викторию

Добавлено через 2 минуты и 50 секунд
можно в маршрутизаторе http://lurkmore.to/%D0%9C%D0%B5%D1%81%D1%8C%D0%B5_%D0%B7%D0%BD%D0%B0%D0%B5%D1%82_%D1%82%D0%BE%D0%BB%D0%BA_%D0%B2_%D0%B8%D0%B7%D0%B2%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D1%8F%D1%85 name на id

Автор: ksnk 23.10.2013, 18:09
Цитата(fics @  23.10.2013,  10:08 Найти цитируемый пост)
а вместь id = 549 поставить конкретное название продукта подставить из БД

Нужно формировать ссылки на странице уже с именем продукта. А чтобы не возится с расшифровкой прилетевшего адреса - добавлять к адресу ID товара. Как пример - адресация топиков форума на phpclub.

Имя получится 
http://mysite.ru/Ёжик_резиновый.i345
Характерная часть адреса - финальная конструкция i\d+$

При этом, если внезапно товар переименуется, старые ссылки не сгниют.

Автор: s1lver 24.10.2013, 06:43
Цитата(fics @ 23.10.2013,  10:08)
Здравствуйте. Еще никогда не приходилось работать с чпу. И поэтому возник вопрос - возможно ли url вида
Код

http://myshop.ru/?page=product&prodid=549


превратить в 
Код

http://myshop.ru/product/назнвание продукта по id


то есть не так
Код

http://myshop.ru/product/549

а вместь id = 549 поставить конкретное название продукта подставить из БД



Так если Вам необходимо просто выводить не псевдонимы а подставлять ID продукта, то впринципе ничего в БД добавлять и не нужно.

Перенаправляте все запросы в скрипт обрабатывающий URI и разбираете полученное значение. Числа и будут являть вашими идентификаторами, которые можно сопоставить с имеющимися уже в БД.  smile 

Автор: s1lver 28.10.2013, 13:20
Вот, кстати, а если включен mod_rewrite и все события передаются в скрипт. Зависит ли от этого работа редиректов?

К примему 

Код

RewriteRule .* index.php [L]

Redirect 301 /index.html http://example.com/index


Почему может не происходить перенаправление? Дело в неправильной обработке в скрипте php или возможны проблемы с сервером?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)