Автор Тема: Дублирующийся URL  (Прочитано 175 раз)

16 Мая 2015, 10:08:11
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день. Третий день бьюсь с проблемой, PS 1.6.14, включен ЧПУ, правила генерации URL традиционные: {category:/}{rewrite}.html

Товаров в магазине более 20 000, поставщиков много, в названиях товаров у многих поставщиков бывает "Блузка", "Футболка" и всё, без дополнительных символов типа артикула или цвета. Или у одного поставщика бывают "Рубашка 3211" и "Рубашка 3211", загружается все через StoreManager, в базе и программе все отражается ОК, у каждого товара свой индивидуальный ID и, соответственно, разные строки.

Но в магазине показывает такую строку: .../rubashki/rubashka-3211.html, а так как рубашек с таким названием у поставщика может быть 10 штук, то заходит в самую первую добавленную с таким названием, карточки товаров остальных рубашек этого же артикула недоступны.
Или еще хуже когда есть просто "Футболка" .../wear/futbolki/futbolka.html, в базе из 300 штук, в каталоге магазина вроде бы тоже 300, но стоит перейти на любую из них - перенаправляет на самую первую добавленную в базу с таким названием.

Прописывал правило для URL {category:/}{id}-{rewrite}.html, в ссылках появился ID продукта, но поведение при переходе осталось прежним.
Перегенерировал .htacces, результат = 0.

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

Подскажите, куда копать? Из огромного числа товаров много просто недоступно из-за этого.
16 Мая 2015, 10:23:24
Ответ #1
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22126
  • Репутация: +17110/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Зря убирали id из url. После изменения сземы url, нужно или пересохранять все товары, или сделать импорт/экспрот для всех товаров/категорий.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
16 Мая 2015, 10:47:21
Ответ #2
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Зря убирали id из url. После изменения сземы url, нужно или пересохранять все товары, или сделать импорт/экспрот для всех товаров/категорий.

Да, я понял свою фатальную ошибку, что убрал ID, ноги растут явно оттуда, пробовал старые htacces засовывать от безысходности, естественно, это ничего не меняет.

В каком классе происходит отражена схема генерации url?
16 Мая 2015, 10:54:05
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1217
  • Репутация: +30/-1
  • Сообщество PrestaShop
    • Просмотр профиля
/classes/Dispatcher.php
16 Мая 2015, 11:15:38
Ответ #4
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
/classes/Dispatcher.php

Большое спасибо!

Пытался избавиться от ненавистного {rewrite}, путем изменения правила формирования product_rule, но изменений не произошло, к сожалению...

301,302 директы и их включение-выключение не приводят к результату, в УРЛ главным является название продукта, остальные дополнения к урл ему вообще по-барабану, их даже можно вырезать из адресной строки и оставлять только название товара.html и магазин успешно все показывает по такому укороченному адресу. Генерить (переписывать через импорт CSV) урл для всех товаров - нереально, т.к. база обновляется почти ежедневно и для такого объема работ просто нет времени и рабочих рук.
Может быть есть еще идеи, пожалуйста...
16 Мая 2015, 14:32:23
Ответ #5
  • Пользователь
  • **
  • Сообщений: 61
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Один раз сделать и потом не менять. При импорте чпу не обязательно указывать. Или у вас автогенерация чпу? 
16 Мая 2015, 19:56:29
Ответ #6
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Удалось-таки колдованием над Dispatch.php, а также экспериментами с настройками Apache добиться желаемого. Теперь все ссылки вида /{ID}-{rewrite}.html отображаются корректно вроде бы, буду тестить дальше.