Автор Тема: Склейка страниц редиректом 301 SS Lego 6.1  (Прочитано 6723 раз)

Оффлайн magnel

  • Пользователь
  • **
  • Сообщений: 38
    • Просмотр профиля
Склейка страниц редиректом 301 SS Lego 6.1
« : Января 19, 2014, 01:13:43 pm »
Господа, нужна помощь в 301 редиректе товаров и категорий. Перевел сайт с ss premium 1.24 на lego 6.1
Естественно, старые урлы были динамические вида index.php?productID=129 и им почти всем по 6 лет. Для СЕО мне нужно включить ЧПУ в лего, склеить старые урлы по которым ранжируется сайт в Яндексе с новыми ЧПУ. В инете нашел вот такое решение для lego 5.0.2 (оригинал http://www.bestauction.ru/showthread.php?t=37263):

"Все заработало спасибо всем кто отвечал
выкладываю полный код который редиректит страницы товара и категории товара"

<?php

if (isset($_GET['productID']) && $_GET['productID'])
{
$hurl=db_r('select hurl from '.PRODUCTS_TABLE.' where productID='.(int)$_GET['productID']);
header('Location: http://'.CONF_SHOP_URL.'/'.REDIRECT_PRODUCT.'/'.$hurl);
}

if (isset($_GET['categoryID']) && $_GET['categoryID'])
{
$hurl=db_r('select hurl from '.CATEGORIES_TABLE.' where categoryID='.(int)$_GET['categoryID']);
header('Location: http://'.CONF_SHOP_URL.'/'.REDIRECT_CATALOG.'/'.$hurl);
}

?>


Подходит ли данное решение для 6.1 ?
Куда класть данный файл и как его назвать ? (так как я понимаю что данный файл просто не может лежать в инклудах темы оформления и работать, он должен где то вызываться в коде при обработке урлов)

Оффлайн Heisenberg

  • Спец
  • ***
  • Сообщений: 157
    • Просмотр профиля
Re: Склейка страниц редиректом 301 SS Lego 6.1
« Ответ #1 : Января 19, 2014, 02:54:33 pm »
Цитировать
Подходит ли данное решение для 6.1 ?
Куда класть данный файл и как его назвать ? (так как я понимаю что данный файл просто не может лежать в инклудах темы оформления и работать
Почему, может быть и в /папка_темы/инклуд. Проверил, работает. Назовите, например: redir.php

Оффлайн magnel

  • Пользователь
  • **
  • Сообщений: 38
    • Просмотр профиля
Re: Склейка страниц редиректом 301 SS Lego 6.1
« Ответ #2 : Января 19, 2014, 11:01:25 pm »
Тогда еще пара хитрых вопросов, если вы говорите что все работает:

1. Сейчас ЧПУ отключено, как заставить движок сгенерировать ЧПУ для всех товаров и категорий ? (как то не очень хочется проходить 8000 карточек товара + 1700 категорий в ручную, и тупо открывать и сохранять карточку )

2. Как изменить порядок образования ЧПУ урлов ? (морда/категория/бренд/подкатегория(возможно)/товар и морда/категория/бренд/подкатегория(возможно) - нужно повторение хлебных крошек в урлах ЧПУ)

3. Ну последний вопрос вытекает из 2-го, нужно убрать лишние уровни в ЧПУ ? (catalog, product, brand - что бы урлы шли сразу от первого слэша) Думаю что те кто в теме сео, понимают зачем это надо убрать:)

Оффлайн Heisenberg

  • Спец
  • ***
  • Сообщений: 157
    • Просмотр профиля
Re: Склейка страниц редиректом 301 SS Lego 6.1
« Ответ #3 : Января 20, 2014, 12:17:39 pm »
Желаемый функционал не предусмотрен в данном скрипте магазина, да и навряд ли измениться.
Хотя в админ-часть, можно было бы добавить генерацию ЧПУ для всех товаров и категорий, думаю это не сложно, но это уже как пожелания по развитию.
Все что касается порядка(структуры) образования ЧПУ, это пол движка переписать надо..
Вариант один: заказывать платно, обратиться к создателям движка.

Оффлайн magnel

  • Пользователь
  • **
  • Сообщений: 38
    • Просмотр профиля
Re: Склейка страниц редиректом 301 SS Lego 6.1
« Ответ #4 : Января 20, 2014, 05:39:59 pm »
Хм. Насчет генерации ЧПУ для всех товаров и категорий все ясно. Но. По поводу catalog, product, brand - мне кажется все проще.

Убрал через админку перенаправление - catalog, теперь в урл категорий: http://test.ru//akrilovyie_vannyi/
Нашел откуда берется второй слэш от стертой catalog: category_functions.php, но
 а)при стертом перенаправлении catalog категории не открываются, выдает (http://install/404/),
 б)собственно если убрать слэш в нужных местах в category_functions.php, то та же лажа (http://install/404/) но улр http://test.ru/akrilovyie_vannyi/ - то есть как надо.
 в)Собственно понятно что дело в конструкции кода:
    if ($row['hurl'] != "" && CONF_CHPU) {
            $row['hurl'] = REDIRECT_CATALOG . "/" . $row['hurl'];
        } else {
            $row['hurl'] = "index.php?categoryID=" . $row['categoryID'];
        }

    думаю что она должна быть следующего вида:

     if ($row['hurl'] != "" && CONF_CHPU) {
            $row['hurl'] =  . $row['hurl'];
        } else {
            $row['hurl'] = "index.php?categoryID=" . $row['categoryID'];
        }
   г) И наверно еще в redirect.inc.php надо убрать define('REDIRECT_CATALOG', '');

Прошу ногами не пинать, я не профи в коде, и не надо говорить что это нарушение лицензии, лично мое мнение что эти catalog, product, brand - сео убийцы. Нафиг надо плодить лишние уровни в урл, Яша да и Гугл плохо к этому относятся.

Для тех кто не в курсе поясню, что страница категории и товара при ЧПУ должны быть не дальше 3 уровня вложенности (морда + 3). При этом, каждый уровень должен быть логичным продолжением предыдущего (морда\ванны\акрилан\товарХХХХХ) Это важно потому, что многие пользователи магазина смотрят на урл, работают с ним, например если урл вида морда\ванны\акрилан\товарХХХХХ, то посетитель сайта может удалить часть урла и попасть куда ему надо. Многие так делают, кто по моложе, старперы на кнопки жмут )

Так вот если удалить часть урла морда\ванны\акрилан\товарХХХХХ, а именно товарХХХХХ, попадешь в категорию бренда, а если убрать из урл морда\product\товарХХХХХ, то на ошибку 404.

На самом деле catalog, product, brand - не являются категориями, в них ничего нет, это пустышки, виртуальная и бесполезная конструкция. Для поисковой системы это красная тряпка, так как в урле есть секция, которой на самом деле не существует, ив нее ничего не вложено.

Я уже не говорю про юзабилити сайта... Что в урл должен быть понятным и логичным для пользователя.

Не знаю, поможет ли вышеуказанное, но прошу обратить разработчиков на эту проблему catalog, product, brand в урл. Идеальным было бы сделать так, если удаляешь перенаправление в админке(оставляешь поле пустым), то пусть урл пляшет от первого слэша, а если кому надо, то пишите что хотите в перенаправлении.

Оффлайн magnel

  • Пользователь
  • **
  • Сообщений: 38
    • Просмотр профиля
Re: Склейка страниц редиректом 301 SS Lego 6.1
« Ответ #5 : Января 20, 2014, 11:25:35 pm »
В общем добился того что урл изменился, но при переходе по ссылке категории выдает 404 ошибку.

Убрал из кода в  category_functions.php - REDIRECT_CATALOG . "/" . $row['hurl'] :

function processCategories($level, $path, $sel) {
    $out = array();
    $cnt = 0;
    $sql = "select categoryID, name, products_count, products_count_admin, parent, hurl from " . CATEGORIES_TABLE . ' where parent=' . $path[$level] . ' and enabled=1 ';
    if (isset($_SESSION["cust_id"]))
    $sql .=' and hidden!=2';
    else $sql .=' and hidden!=1'; 
    $sql.= ' ORDER BY ' . CONF_SORT_CATEGORY . " " . CONF_SORT_CATEGORY_BY;
    $q = db_query($sql);
    while ($row = db_assoc_q($q)) {
        if ($row['hurl'] != "" && CONF_CHPU) {
            $row['hurl'] ;
        } else {
            $row['hurl'] = "index.php?categoryID=" . $row['categoryID'];
        }
        $row['level'] = $level;
        $out[] = $row;
        //process subcategories?
        if ($level + 1 < count($path) && $row['categoryID'] == $path[$level + 1]) {
            //add $sub_out to the end of $out
            $sub_out = processCategories($level + 1, $path, $sel);
            foreach($sub_out as $rez) $out[] = $rez;
        }
    }
    return $out;
}

В .htaccess правил:

#catalog url's
   RewriteRule ^/(.*)$ index.php?catalog_hurl=$1 [L]

Подскажите куда копать, и в чем засада? И вообще не понятно, в каком файле идет сборка урла ???