Убрать дубль страницы со слешем в конце.

Тема в разделе "Общие вопросы", создана пользователем Atommal, 4 окт 2015.

  1. Atommal

    Atommal Новичок

    Сообщения:
    6
    Симпатии:
    0
    Здравствуйте, друзья!

    Прошу немного помочь разобраться с такой проблемой (стоит русская сборка 2.0.3.1).

    Хочу склеить страницы со слешем в конце "/" и без него, пытался это сделать разными способами:

    1. (Наверное более приоритетный). Стоит Paladin SEO и которого есть функция "trailing slash" - она прекрасно удаляет все слеши на всех страницах кроме главной, на главной же происходит циклическая переадресация и страница не грузится (я так понимаю, что главная страница всегда со "/" в конце, поэтому такая проблема).

    Немного погуглив, нашел такое решение:
    в файле ssb_seo_url.php добавить условие (выделено жирным)
    Код:
    if(substr($this->curPageURL,-1) == '/' AND $tools['trailing_slash']['status'] == true AND $this->curPageURL != "http://MOYSAIT.RU/") {
    $new_url = rtrim($this->curPageURL,"/");
    $this->ssb_helper->redirect($new_url, 301);
    }
    Добавил - не помогло. Но вот еще немного посидев, нашел, что в файле /vqmod/vqcache/vq2-system_modification_catalog_controller_common_seo_url.php кешируется аналогичная строка и если добавить туда тоже самое, то работает:)
    Проблема в том, что хватает этого не на долго, до нового обновления кеша этого файлика.
    А вот от куда оно его тянет - понять не могу, возможно кто подскажет.
    Также в Паладине стоит использование разного контроллера для seo-url "Using the own Opencart seo-url controller", то есть догадываюсь что копать нужно в файле /catalog/controller/common/seo_url.php
    да вот знаний не хватает:(

    2. Возможно кто подскажет решение склеивания таких страниц через .htaccess, все универсальные способы, которые я находил работают во фронтенде, но вот вход в админку ломают.
    Ну или другие вариант может подскажите.

    Спасибо за помощь!
     
  2. Zhezkazganetcs

    Zhezkazganetcs Продвинутый пользователь

    Сообщения:
    819
    Симпатии:
    108
    а как вы делали?
    сколько страниц?
    сделайте редирект
    Код:
    Redirect 301 /test-1/ http://site.ru/test-2
     
  3. Atommal

    Atommal Новичок

    Сообщения:
    6
    Симпатии:
    0
    Делал так как описано выше, а также пробовал через .htaccess:
    Код:
    RewriteCond %{HTTP_HOST} (.*)
    RewriteCond %{REQUEST_URI} /$ [NC]
    RewriteRule ^(.*)(/)$ $1 [L,R=301]
    Такой способ помогает для фронтенда, но ломает вход в админку Opencart http://prntscr.com/8nxi3k
    На счет страниц немного не понял вопрос, если вы к тому, что бы вручную проставить все редиректы, то это не подойдет, страниц более 15К.
    Редирект сделать не проблема, но хочется именно склеить все страницы одним махом.
     
  4. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    добавлять надо в xml файл.

    а если добавить исключение для админки?? Типа если admin то правило не работает. По правилам не силен, но думаю можно прописать...
    Думаю правила работают сверху вниз. Попробуйте тупо для админки сделать редирект с слеша на без слеша, но только сразу после вашего правила..
     
    Atommal нравится это.
  5. Atommal

    Atommal Новичок

    Сообщения:
    6
    Симпатии:
    0
    Спасибо помогло.

    На будущее, может кому будет полезно:
    Если у вас после включения trailing slash в Paladin Seo не работает главная нужно в файлик /vqmod/xml/ssb-catalog-generate.xml добавить исключение:
    Код:
    AND $this->curPageURL != "http://site.com/"
    чтобы получилось вот так:

    if(substr($this->curPageURL,-1) == '/' AND $tools['trailing_slash']['status'] == true AND $this->curPageURL != "http://site.com/") {
    $new_url = rtrim($this->curPageURL,"/");
    $this->ssb_helper->redirect($new_url, 301);
    }
     
    Последнее редактирование модератором: 5 окт 2015
  6. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    не выделится жирным. Измените тег code на qcode
     
  7. Atommal

    Atommal Новичок

    Сообщения:
    6
    Симпатии:
    0
    Поправил
     
  8. garfild304

    garfild304 Пользователь

    Сообщения:
    128
    Симпатии:
    1

    Как исключение для админки сделали?
     
  9. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    RewriteRule ^admin/ - [L]
    добавить перед правилом которые нужно обойти, попробуй
     
    DiMoss нравится это.