Автор Тема: Проблема со слеш / (слэш)  (Прочитано 41 раз)

26 Ноября 2016, 02:58:22
  • Новичок
  • *
  • Сообщений: 42
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте!
Прошу помощи.
Есть такие проблемы со слеш
страница товара:
site. com/shop/tovar-1 - работает
добавляю слеш
site. com/shop/tovar-1/ - 404 ошибка

страница производителей доступна как со слеш так и без него
site. com/designers
site. com/designers/
отображается и так и так

страница производителя:
site. com/designers/designer - работает
site. com/designers/designer/ - никуда не перебрасывает но отображается страница со всеми производителями

на всех остальных страницах (главная, категории) идет перенаправление и слеш убирается автоматом

Что нужно сделать? Помогите пожалуйста
26 Ноября 2016, 11:41:46
Ответ #1
  • Новичок
  • *
  • Сообщений: 24
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Так бывает из-за правил редиректа. В них слеш учитывает или нет.
26 Ноября 2016, 11:55:11
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 2169
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
У тебя одна проблема, это модуль смены url. Никто тебе точно не скажет как исправить. Причину сказали, осталось только правильно правила RewriteRule подобрать или дефолтные чпу менять.
Зачем сто тем поднимать, пиши в одной, так хоть понятнее будет.
26 Ноября 2016, 12:56:39
Ответ #3
  • Новичок
  • *
  • Сообщений: 42
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У тебя одна проблема, это модуль смены url. Никто тебе точно не скажет как исправить. Причину сказали, осталось только правильно правила RewriteRule подобрать или дефолтные чпу менять.
Зачем сто тем поднимать, пиши в одной, так хоть понятнее будет.

ну так если бы хоть кто то сказал что нужно сделать с редиректом, какое правило добавить, я бы больше не писал.
а вариант с модулем, вообще не катит, сайту 3 года, до этого был на другой платформе, там не было id, соответственно чтобы ничего не потерять я убрал id.

по rewriteRule сможете подсказать что нужно сделать?
26 Ноября 2016, 12:57:59
Ответ #4
  • Новичок
  • *
  • Сообщений: 42
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
сможет кто нибудь сказать какое правило нужно добавить и куда?
26 Ноября 2016, 13:41:11
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 13147
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В prestashop слеш в url подставляется в классе /classes/Dispatcher.php в htaccess не требуется дописывать правила. 
26 Ноября 2016, 14:07:26
Ответ #6
  • Новичок
  • *
  • Сообщений: 42
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В prestashop слеш в url подставляется в классе /classes/Dispatcher.php в htaccess не требуется дописывать правила.

блин, может я не так пишу.
вобщем смысл такой
есть категория
site. com/shop/man
эта категория доступка как с слэшем так и без него, когда добавляешь сам слеш то он редиректит на без слеша.
тоже самое и с главной страницей.
НО
такого не происходит  со страницей со всеми производителями и с каждым производителем в отдельности, также такого не происходит на страницах товаров.
так как же сделать чтобы все страницы были доступны со слешем и без него, но не дубли а чтобы я мог подставить слеш и он переходил на без него.

я сколько сайтов знаю, везде у всез работает так. у меня у самого раньше было именно так. а тут хрень какая то.
26 Ноября 2016, 15:15:41
Ответ #7
  • Новичок
  • *
  • Сообщений: 42
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
добавил в dispatcher.php

$uri = preg_replace("/\?.*/i",'', $_SERVER['REQUEST_URI']);
 
if (strlen($uri)>1) {// если не главная страница...
  if (rtrim($uri,'/')!=$uri) {
    header("HTTP/1.1 301 Moved Permanently");
    header('Location: http://'.$_SERVER['SERVER_NAME'].str_replace($uri, rtrim($uri,'/'), $_SERVER['REQUEST_URI']));
    exit();   
  }
}
все дубли пропали, страницы и производители теперь открываются как с / так и без /, набираю / на конце он перекидывает на без /.
то что надо.
вот только не знаю насколько это правильно в плане "программно".
в плане seo это верное решение на 100%.
26 Ноября 2016, 19:51:31
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 2169
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Программно правильно или нет проверятся так, работает, значит правильно. И не заморачивайся, код твой никто кроме тебя не видет. Это в  команде нужно соблюдать правила кодирования. Когда сам делаешь, то не важно какой код.