Помогите с ЧПУ с помощью mod_rewrite

OG
На сайте с 15.10.2012
Offline
0
492

Привет всем, вопрос в следующем

на сайте есть такой url - /catalog/index.php?id=1

Соответсвенно он обращается к базе данных где есть соответствующая таблица

В этой таблице куча информации в том числе есть поле url = "/tovary/nazvanie_tovara/"

Вопрос - как правильно прописать в .htaccess условия и правила дабы при обращении на сайт

по url вида www.site.ru/tovary/nazvanie_tovara/

выполнялся

www.site.ru/catalog/index.php?id=1

Заранее спасибо.

siv1987
На сайте с 02.04.2009
Offline
427
#1

Подход "для конкретного урл выполнялся конкретный файл" - не совсем верный. Если нужно полноценное ЧПУ, а не работоспособность отдельно взятого урл, то нужно составлять шаблон, направить его на файл и обрабатывать входящие данные в скрипте.

K5
На сайте с 21.07.2010
Offline
209
#2

cms самописная???

аська 45два48499два записки на работе (http://memoryhigh.ru) помогу с сайтом, удалю вирусы, настрою впс -> отзывы ТУТ (/ru/forum/836248) и ТАМ (http://www.maultalk.com/topic140187.html) !!!всегда проверяйте данные людей, которые сами пишут вам в аську или скайп!!!
OG
На сайте с 15.10.2012
Offline
0
#3

CMS - самописная.

index.php - файл для вывода динамических страниц товаров, где id - их идентификационные номера.

Как и у большинства сайтов на php вся информация хранится в базе mysql.

Есть шаблоны, которые отвечают за дизайн этих страниц и страниц которые на них ссылаются.

В шаблоне ссылающихся страниц я сделал ссылки на страницы с товарами в виде

<a href="/www.site.ru/tovary/nazvanie_tovara/"> Название товара </a>

Естественно они не работают, так как я не могу разобраться как описать правило в htacces

bukachuk
На сайте с 07.09.2008
Offline
97
#4

Как раньше была адресация товара? Название товара в URL храниться в базе?

Соответсвите товар был = товар стал скажите по URL

Как вариант в .htaccess

#.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+) index.php [L,QSA]

Потом в PHP разбираете URL из $_SERVER['REQUEST_URI'];

Делите его на сегменты через "/" как хотите, чем хотите. explode,preg_match etc.

Выбираете оттуда имя товара

Фильтруете его хорошенько

Достаете из базы нужный товар и выводите

Программирование PHP,Mysql (/ru/forum/934470)
OG
На сайте с 15.10.2012
Offline
0
#5

Раньше товар был по www.site.ru/catalog/index.php?id=1

Название товара хранится в базе, так же в базе хранится название товара на латинице.

(поле url=/tovary/nazvanie_tovara/)

Теперь нужно чтобы товар был доступен по www.site.ru/tovary/nazvanie_tovara/

то бишь нужно заменить /catalog/index.php?id=1

bukachuk
На сайте с 07.09.2008
Offline
97
#6

Тогда вам мой вариант, редиректите все на index.php, а в движке правьте

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