Помогите разобраться с .htaccess

Oleg Telegin

Новичок
Здравствуйте.
Вопрос. При заходе на страницу есть меню категорий с ссылками вида:
мой сайт/pages/manufacturer.php?category = n
Нажав на ссылку заходим на страницу с товарами принадлежащей данной категории. Ссылки на страницу товара имеют вид
мой сайт/pages/product/kraska-interernaya-lateksnaya
где kraska-interernaya-lateksnaya извлекается из базы. Т.е извлекаю не id товара, а значение транслита каждого наименование товара.
Далее в файле .htaccess прописываю
RewriteEngine On
RewriteRule ^product/([^/]+) manufacturer.php?tovar=$1&page=mat-info.
Все красиво работает, попадаем на страницу товара. В адресной строке видим мой сайт/pages/product/kraska-interernaya-lateksnaya.
Только дальше идут непонятки. Все ссылки в меню из
мой сайт/pages/manufacturer.php?category = n становятся
мой сайт/pages/product/manufacturer.php?category = n
Да и во все ссылки на странице добавляется product. Что это такое и как с этим бороться?
 

С.

Продвинутый новичок
В УРЛах есть два особых символа, которые обрабатываются бразуером не как все другие. Это "/" и "#". Если ты такий смелый и решил использовать один из этих символов для своих ЧПУкрашательств, то будь добр потрудиться ибъяснить это браузеру. Он же не в курсе, думает по-другому

Или не используй "/" ( есть много других красивых символов), либо разоберись сам, что происходит и подопри костыльком.,
 

hell0w0rd

Продвинутый новичок
сайт/pages/product/manufacturer.php - вот так не надо делать.
Надо делать так: мой_сайт/index.php/запрос - а дальше разбирать запрос. Ну и разобрав запрос уже куда хотите его направляйте. В таком случае вам подойдет общеизвестное и простое правило для htaccess:
PHP:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !=/favicon.ico # Это можно опустить, просто не всегда есть фавиконка, а в error_log все 404 пишутся
    RewriteRule ^ index.php [L]
</IfModule>
 

Фанат

oncle terrible
Команда форума
Помогите разобраться с .htaccess
То, с чем ты пытаешься разобраться, называется не "htaccess", а "mod_rewrite".
Т.е извлекаю не id товара, а значение транслита каждого наименование товара.
ога. и если товар переименовали, то все предыдущие ссылки на него накрываются медным тазом.
Все ссылки в меню становятся
Чтобы ссылки из меню не превращались в тыкву, путь надо всегда писать абсолютный
 

Oleg Telegin

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

ога. и если товар переименовали, то все предыдущие ссылки на него накрываются медным тазом.
Да такого быть и не может, так как товар переименовываться не будет. Заводится новый, старый убирается.

А как вот для примера ссылка
http://www.triora.ua/ru/products/universalnaja-gruntovka-glubokogo-proniknovenija.html
это же явно не по id товара идет извлечение из базы или сайт статичный.
 

hell0w0rd

Продвинутый новичок
Да такого быть и не может, так как товар переименовываться не будет. Заводится новый, старый убирается.
Вот-вот. Также можно просто заменить значение в поле с транслитом.
Сделайте единую точку входа как я написал выше и будет вам счастье)
 
Сверху