Jump to content

Recommended Posts

извините если баян, но решения так и не нашел.

Нужно редиректить только определенную категорию, например с

site.com/category/OLD_subcategory/product1

site.com/category/OLD_subcategory/product2

на

с site.com/category/NEW_subcategory/product1

с site.com/category/NEW_subcategory/product2

________ в вышеприведенном случае должна изменятся только субкатегория, все остальное остается то что ввел пользователь site.com/(.*)/subcategory/(.*)

или с

site.com/OLD_category/subcategory/product1

site.com/OLD_category/subcategory/product2

на

с site.com/NEW_category/subcategory/product1

с site.com/NEW_category/subcategory/product2

________в вышеприведенном случае должна изменятся только категория, все остальное остается то что ввел пользователь site.com/category/(.*)/(.*)

или с

site.com/OLD_category/OLD_subcategory/product1

site.com/OLD_category/OLD_subcategory/product2

на

с site.com/NEW_category/NEW_subcategory/product1

с site.com/NEW_category/NEW_subcategory/product2

________в вышеприведенном случае должна изменятся только категория и субкатегория, все остальное остается то что ввел пользователь site.com/category/subcategory/(.*)

С опыта использования регулярок понимаю что нужно групировать ссылку по частям типа  ^(.*)/(.*)/(.*)?$

потом уже слживать части используя переменные типа $1, $2, $3

Но в случае с опенкартом там какая то морока с _route_= и единственный хоть как то работоспособный код получился таким:

 

RewriteCond %{QUERY_STRING} ^_route_=category/OLD_subcategory/.*$
RewriteRule ^(/?)/(.*)?$ http ://site.com/category/NEW_category/? [R=301,L] (без пробела после http)
 
Разгруппировать ссылку даже способом RewriteRule ^(.*)/(.*)?$ не получилось не могу понять как тут все вообще происходит, очень много времени потратил на это, не далось.
надеюсь на ваш совет

спасибо

 

p.s htaccess под спойлером

Options +FollowSymlinks
 
# Prevent Directoy listing 
Options -Indexes
 
# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini|log)">
 Order deny,allow
 Deny from all
</FilesMatch>
 
# SEO URL Settings
RewriteEngine On
 
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Share this post


Link to post
Share on other sites

ех.. с ответами вижу не густо)

сделал через php, рассказываю как.

 

 

в БД  таблице url_alias создал колонку old_keyword - туда на против нужных товаров аптейтнул старые кейворды из колонки keyword в которую в свою очередь сгенерировал новые, можно и руками пописать кто любит не особо шарит в построении запросов.

Далее под спойлером

в catalog/controller/header.php

после 

$this->load->model('setting/store'); 

строка 

$this->model_setting_store->redirecTtoNewUrl($this->request->server['REQUEST_URI']);

в catalog/model/setting.php два метода

	public function redirecTtoNewUrl($uriString)
    {
        $redirect = false;
        $urisArray = explode('/', $uriString);
        foreach ($urisArray as $key => $uri) {
            $result = $this->getSearchUri($uri);
            if ($result){
                $urisArray[$key] = $result['keyword'];
                $redirect = true;
            }
        }
        if ($redirect){
            $redirect = implode('/', $urisArray);
            $domain = $this->request->server['HTTP_HOST'];
            header('HTTP/1.1 301 Moved Permanently');
            header('Location: http://' . $domain . $redirect );
            exit();
        }
    }

    public function getSearchUri($uri)
    {
        $sql = "SELECT keyword
                    FROM url_alias 
                    WHERE old_keyword 
                    LIKE '" . $uri . "'";
        $query = $this->db->query($sql);
        return $query->row;
    }

 

В результате урл по которому зашел пользователь на сайт разбивается на участки категория\подкатегория\товар\ или сколько угодно вложенных подкатегорий

если адрес старой категории или товара по которому пришел пользователь присутствует в колонке old_keyword то его перебрасывает на новую с заголовком 301.

причем урл формеруется полностью до того как сделать редирект, подразумивается что для пользователя в один момент может сгенерироватся полностью новая цепочка адреса категорий или товаров

Всем спасибо)

Share this post


Link to post
Share on other sites

т.е. все должны броситься

 

RewriteRule category/OLD_subcategory/(.*) /category/NEW_subcategory/$1 {R=301,L]

Share this post


Link to post
Share on other sites

 

Но в случае с опенкартом там какая то морока с _route_=

Никаких заморочек

 

Все правила сразу после Rewrite ON

 

RewriteRule (OLD_category)/(OLD_subcategory)/(.*)  NEW_category/NEW_subcategory/$3

Share this post


Link to post
Share on other sites

Никаких заморочек

 

Все правила сразу после Rewrite ON

 

RewriteRule (OLD_category)/(OLD_subcategory)/(.*)  NEW_category/NEW_subcategory/$3

 

прописал редирект по єтому шаблону после

RewriteEngine On

не заработал совсем ни как,

после

RewriteBase /

тоже пробовал - то же самое

Share this post


Link to post
Share on other sites

НЕ верю

 

покажите правила

Share this post


Link to post
Share on other sites

а так?

 

RewriteCond %{HTTP_HOST} ^/category/OLD_subcategory/product_id=\[0-9]$
RewriteRule ^(.*)$ http://ваша_сайта.ru/category/NEW_subcategory/product_id=\[0-9]$2? [R=301,L]
помнишь скок бились над этим?)

 

 

:)

%{HTTP_HOST} - только хост!!!!

 

приведенные мною правила работающие, есть одно, но... там КОЕ-ЧЕГО не хватает, а именно инструкции для редиректа.

Но тупое копирование не приветствуется.

Share this post


Link to post
Share on other sites

так ему нужно со всех хостов разве?
ему ж ток подкатегрию

Человеку нужно решение или разгадывание ребусов?
 

Share this post


Link to post
Share on other sites

С опыта использования регулярок понимаю что нужно групировать ссылку по частям типа ^(.*)/(.*)/(.*)?$ потом уже слживать части используя переменные типа $1, $2, $3 Но в случае с опенкартом там какая то морока с _route_= и единственный хоть как то работоспособный код получился таким:

Еще и разобраться

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By kirians
      1 584.10 руб
      Скачать/Купить дополнение


      Redirect URLs Manager - 301, 302, 307 and 404 SEO optimizer (Модуль перенаправления URL-адресов - оптимизатор SEO 301, 302, 307 и 404)
      Модуль перенаправления URL-адресов позволяет легко и быстро настраивать перенаправления на вашем веб-сайте через панель администратора OpenCart. Это нужно, если вы недавно изменили URL-адрес одного из своих продуктов либо просто удалили продукт. Модуль направит клиента на страницу с актуальной информацией. После чего клиент сможет сделать покупку.
       
      Модуль перенаправления URL-адресов - очень простое решение для настройки Redirect-а на разные URL-адреса, которое помогает посетителям больше не попадать на страницы, которых “НЕТ” на вашем сайте.
       
      Модуль совместим с мульти-магазинами, что избавит вас от необходимости отслеживать неработающие страницы и вручную менять каждую из них.
       
      Как это работает?
       
      Добавте новое перенаправление. Для этого, укажите неправильный или неработающий URL-адрес (ошибка 404) и тот URL-адрес, на который вы хотите перенаправить клиента. После чего нажмите кнопку сохранения: новое перенаправление работает!
       
      Внимание: перенаправления действуют только для страниц домена, на котором установлен модуль. В случае если модуль установлен, например, на www.domain.com, модуль может перенаправлять страницы только с www.domain.com на страницы любых доменов, которые вы хотите.
       
      Вы можете настроить неограниченное количество перенаправлений разного типа переадресации URL: 301, 302 и 307. Также можно выбрать автоматические изменения URL-адреса для редактируемого или удаленного товара. 
       
      Все перенаправления указываются в таблице внизу страницы модуля. 
      Каждая ссылка должна быть полностью записана (1 url = 1 перенаправление), нельзя использовать шаблоны подстановки (*,? и т.д.) для замены символьных строк.
      Ненужные перенаправления в любой момент можно отредактировать или удалить.

       
      Также Redirect URLs Manager позволяет отслеживать на вашем сайте страницы, которые не найдены (404), и записывать их в таблицу. 
      Найденные URL-адреса можно легко добавить в список перенаправлений, дополнительно указав действующий URL-адрес и код перенаправления.
      Вы можете с помощью фильтра отсортировать данные таблицы по Url-адресу, IP-адресу, User-Agent. Еще в настройках можно указать определенные Url-адреса, IP-адрес, User-Agent, что позволяет игнорировать получение недействительных данных от ботов или других парсеров.

       
      Функция Импорт/Экспорт перенаправлений через файл CSV позволяет:
      - массово загрузить новые перенаправления,
      - экспортировать (сохранить) список перенаправлений, которые уже внесены.

       
      Использование Модуля перенаправления URL-адресов помогает уменьшить на вашем сайте количество страниц с 404 ошибкой. Это улучшает результаты индексации страниц и повышает позицию вашего сайта в поисковой выдаче.

       
      Особенности:
      - Неограниченное количество перенаправлений разного типа (301, 302 и 307) для устранения 404 ошибок.
      - Автоматическое обнаружение 404 ошибок и изменение URL-адресов для поисковых систем.
      - Возможность добавления перенаправлений друг за другом.
      - Массовое добавление перенаправлений с помощью файла CSV.
      - Возможность сохранения внесенных перенаправлений.
      - Совместимость с мульти-магазином.
      - Повышает SEO и позицию URL в поисковой выдаче.
      - Плагин работает с темами Journal 3

       
      Инструкции по установке:
      - Скачайте и установите плагин;
      - В настройках плагина выберите нужные параметры;
      - Добавляйте новые перенаправления;
      - Отслеживайте 404 URLs для создания перенаправлений;
      - Используйте для удобства функцию CSV import/export;
      - Сохраните изменения и улучшайте ваш SEO каждый день.

       
      Помощь / Свяжитесь с нами:
      Ответим на любые вопросы, связанные с модулем.
      Электронная почта: [email protected]
      Добавил kirians Добавлено 18.09.2020 Категория SEO, карта сайта, оптимизация Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Нет Старая цена 2263  
    • By kirians
      Модуль перенаправления URL-адресов позволяет легко и быстро настраивать перенаправления на вашем веб-сайте через панель администратора OpenCart. Это нужно, если вы недавно изменили URL-адрес одного из своих продуктов либо просто удалили продукт. Модуль направит клиента на страницу с актуальной информацией. После чего клиент сможет сделать покупку.
       
      Модуль перенаправления URL-адресов - очень простое решение для настройки Redirect-а на разные URL-адреса, которое помогает посетителям больше не попадать на страницы, которых “НЕТ” на вашем сайте.
       
      Модуль совместим с мульти-магазинами, что избавит вас от необходимости отслеживать неработающие страницы и вручную менять каждую из них.
       
      Как это работает?
       
      Добавте новое перенаправление. Для этого, укажите неправильный или неработающий URL-адрес (ошибка 404) и тот URL-адрес, на который вы хотите перенаправить клиента. После чего нажмите кнопку сохранения: новое перенаправление работает!
       
      Внимание: перенаправления действуют только для страниц домена, на котором установлен модуль. В случае если модуль установлен, например, на www.domain.com, модуль может перенаправлять страницы только с www.domain.com на страницы любых доменов, которые вы хотите.
       
      Вы можете настроить неограниченное количество перенаправлений разного типа переадресации URL: 301, 302 и 307. Также можно выбрать автоматические изменения URL-адреса для редактируемого или удаленного товара. 
       
      Все перенаправления указываются в таблице внизу страницы модуля. 
      Каждая ссылка должна быть полностью записана (1 url = 1 перенаправление), нельзя использовать шаблоны подстановки (*,? и т.д.) для замены символьных строк.
      Ненужные перенаправления в любой момент можно отредактировать или удалить.

       
      Также Redirect URLs Manager позволяет отслеживать на вашем сайте страницы, которые не найдены (404), и записывать их в таблицу. 
      Найденные URL-адреса можно легко добавить в список перенаправлений, дополнительно указав действующий URL-адрес и код перенаправления.
      Вы можете с помощью фильтра отсортировать данные таблицы по Url-адресу, IP-адресу, User-Agent. Еще в настройках можно указать определенные Url-адреса, IP-адрес, User-Agent, что позволяет игнорировать получение недействительных данных от ботов или других парсеров.

       
      Функция Импорт/Экспорт перенаправлений через файл CSV позволяет:
      - массово загрузить новые перенаправления,
      - экспортировать (сохранить) список перенаправлений, которые уже внесены.

       
      Использование Модуля перенаправления URL-адресов помогает уменьшить на вашем сайте количество страниц с 404 ошибкой. Это улучшает результаты индексации страниц и повышает позицию вашего сайта в поисковой выдаче.

       
      Особенности:
      - Неограниченное количество перенаправлений разного типа (301, 302 и 307) для устранения 404 ошибок.
      - Автоматическое обнаружение 404 ошибок и изменение URL-адресов для поисковых систем.
      - Возможность добавления перенаправлений друг за другом.
      - Массовое добавление перенаправлений с помощью файла CSV.
      - Возможность сохранения внесенных перенаправлений.
      - Совместимость с мульти-магазином.
      - Повышает SEO и позицию URL в поисковой выдаче.
      - Плагин работает с темами Journal 3

       
      Инструкции по установке:
      - Скачайте и установите плагин;
      - В настройках плагина выберите нужные параметры;
      - Добавляйте новые перенаправления;
      - Отслеживайте 404 URLs для создания перенаправлений;
      - Используйте для удобства функцию CSV import/export;
      - Сохраните изменения и улучшайте ваш SEO каждый день.

       
      Помощь / Свяжитесь с нами:
      Ответим на любые вопросы, связанные с модулем.
      Электронная почта: [email protected]
    • By STh
      Исходные данные:
      Чистая новая установка ocStore 3.0.2.0 на вирт. сервер xampp в локальную папку /shop3/. Включены ЧПУ во вкладке Сервер, во вкладке SeoPro включено "Включить SeoPro" и "ЧПУ товаров с категориями". Все остальные настройки - по-умолчанию. .htaccess активирован, базовый Rewrite - /shop3/ - прописан. Больше ничего не менялось.
       
      Суть проблемы:
      ЧПУ работают, категории и товары открываются нормально. Только главная страница выдаёт бесконечный редирект (не открывается). Админка работает без проблем. Если в настройках вкладки SeoPro ещё включить "Добавить слэш в конец ссылки", то всё открывается нормально, включая главную. Но везде в конце URL добавляется слэш. Нужно чтобы работало без этого слэша.
       
      Вопрос:
      Как избавиться от бесконечного редиректа главной, не включая конечный слэш? На этом же xampp'е запускается ещё пару магазинов на ocStore 2.x.x.x и блог на Wordpress (в своих подпапках) - там таких проблем нет: можно включать конечный слэш или отключать, всё работает без проблем.
    • By zomo
      Добрый день, кто разбирался с seo_pro
       
      там есть вот такая вот строчка (в функции validate()) которая выполняет редирект в случае если убрать часть вложенности url
       
      if (rawurldecode($url) != rawurldecode($seo) && isset($this->request->server['SERVER_PROTOCOL'])) { header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently'); $this->response->redirect($seo, 301); } Если я хочу чтобы отдавало все же 404 страницу в случае неправильного ввода url, могу ли я сделать так:
       
      if (rawurldecode($url) != rawurldecode($seo) && isset($this->request->server['SERVER_PROTOCOL'])) { header($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $this->request->get['route'] = 'error/not_found'; } Или в будущем это мне выльется во что то нехорошее ?
    • By mohyliv
      Здравствуйте, уважаемые форумчане,
       
      посоветуйте, пожалуйста, как можно менять url редиректа при выборе разных опций товара и нажатии кнопки «Купить»?
      Видел модули, но в них можно задать только один url и изменить название кнопки.
       
      Спасибо!
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.