Jump to content

Recommended Posts

Привет, всем!)

 

Скажите, насколько дико добавлять такой код: (вкратце он редиректит на каноническую страницу если пользователь попал не на неё)

		if(is_array($this->data['links'])) {
			$page = $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
			foreach ($this->data['links'] as $key => $link) {
				if($link['rel'] == 'canonical' && $link['href'] && $page != $link['href']) {
					header("HTTP/1.1 301 Moved Permanently");
					header("Location: ".$link['href']); 
					exit();
				}
			}
		}

в /catalog/controller/common/header.php для редиректа со страниц типа index.php?route=product/product&path=1&product_id=2 на ЧПУ?

 

И если есть другие варианты, поделитесь)

Share this post


Link to post
Share on other sites

Очень дико

Надо как в seo_pro.php

    private function validate()
    {
        $cnt_cnt = $this->config->get('asc_cnt_cnt');
        if (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') {
            return;
        }
        if (empty($this->request->get['route'])) {
            $this->request->get['route'] = 'common/home';
        }
        if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
            return;
        }
        if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
            $config_url = substr($this->config->get('config_ssl'), 0, $this->strpos_offset('/', $this->config->get('config_ssl'), 3) + 1);
            $url        = str_replace('&', '&', ltrim($this->request->server['REQUEST_URI'], '/'));
            $seo        = str_replace('&', '&', str_replace($config_url, '', $this->url->link($this->request->get['route'], $this->getQueryString(array(
                'route',
                '_route_',
                'site_language'
            )), 'SSL')));
        } else {
            $config_url = substr($this->config->get('config_url'), 0, $this->strpos_offset('/', $this->config->get('config_url'), 3) + 1);
            $url        = str_replace('&', '&', ltrim($this->request->server['REQUEST_URI'], '/'));

            $seo        = str_replace('&', '&', str_replace($config_url, '', $this->url->link($this->request->get['route'], $this->getQueryString(array(
                'route',
                '_route_',
                'site_language'
            )), 'NONSSL')));


        }

        if (rawurldecode($url) != rawurldecode($seo)) {
            header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');

            
                $this->response->redirect($config_url . $seo);
            
        }
    }
    private function strpos_offset($needle, $haystack, $occurrence)
    {
        $arr = explode($needle, $haystack);
        switch ($occurrence) {
            case $occurrence == 0:
                return false;
            case $occurrence > max(array_keys($arr)):
                return false;
            default:
                return strlen(implode($needle, array_slice($arr, 0, $occurrence)));
        }
    }
    private function getQueryString($exclude = array())
    {
        if (!is_array($exclude)) {
            $exclude = array();
        }
        return urldecode(http_build_query(array_diff_key($this->request->get, array_flip($exclude))));
    }

Share this post


Link to post
Share on other sites

В культуре opencart нельзя пользоваться массивами $_SERVER (это плохо с точки зрения безопасности)

Только $this->request->server

Share this post


Link to post
Share on other sites

В культуре opencart нельзя пользоваться массивами $_SERVER (это плохо с точки зрения безопасности)

Только $this->request->server

 

Спасибо, за комментарии!) Будем исправляться!

Share this post


Link to post
Share on other sites

(вкратце он редиректит на каноническую страницу если пользователь попал не на неё)

а нафига тебе это вообще?

не изобретай проблемы и велосипедные решения.

Share this post


Link to post
Share on other sites

Хм, а есть в стандартных функциях такой редирект?

Share this post


Link to post
Share on other sites

представь себе торговый центр.

у него есть несколько входов - главный, боковой, служебные.

внутри на третьем этаже есть магазин "супер-пупер-ништяки".

народ может зайти в торговый центр через любой вход и дойти до магазина - ведь магазин остается на месте, на третьем этаже НЕЗАВИСИМО от того, через какой вход зашел посетитель.

а ты хочешь всех, кто пытается через боковой вход зайти в торговый центр (чтобы попасть в магазин ништяков), выводить из ТЦ и отправлять к магазину через один из служебных входов.

НАХЕРА?

Share this post


Link to post
Share on other sites

представь себе торговый центр.

у него есть несколько входов - главный, боковой, служебные.

внутри на третьем этаже есть магазин "супер-пупер-ништяки".

народ может зайти в торговый центр через любой вход и дойти до магазина - ведь магазин остается на месте, на третьем этаже НЕЗАВИСИМО от того, через какой вход зашел посетитель.

а ты хочешь всех, кто пытается через боковой вход зайти в торговый центр (чтобы попасть в магазин ништяков), выводить из ТЦ и отправлять к магазину через один из служебных входов.

НАХЕРА?

 

Поисковики требуют использовать только ЧПУ, а с остальных дублей делать редирект 301

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 STh
      Исходные данные:
      Чистая новая установка ocStore 3.0.2.0 на вирт. сервер xampp в локальную папку /shop3/. Включены ЧПУ во вкладке Сервер, во вкладке SeoPro включено "Включить SeoPro" и "ЧПУ товаров с категориями". Все остальные настройки - по-умолчанию. .htaccess активирован, базовый Rewrite - /shop3/ - прописан. Больше ничего не менялось.
       
      Суть проблемы:
      ЧПУ работают, категории и товары открываются нормально. Только главная страница выдаёт бесконечный редирект (не открывается). Админка работает без проблем. Если в настройках вкладки SeoPro ещё включить "Добавить слэш в конец ссылки", то всё открывается нормально, включая главную. Но везде в конце URL добавляется слэш. Нужно чтобы работало без этого слэша.
       
      Вопрос:
      Как избавиться от бесконечного редиректа главной, не включая конечный слэш? На этом же xampp'е запускается ещё пару магазинов на ocStore 2.x.x.x и блог на Wordpress (в своих подпапках) - там таких проблем нет: можно включать конечный слэш или отключать, всё работает без проблем.
    • By Exploits
      Редиректор 301 - это модуль для создания редиректов в Opencart за пару секунд!

      В работающем магазине практически всегда есть какие-то страницы которые надо перенаправить. Это могут быть хвосты от переезда из других движков, это может быть из-за смены структуры меню или системы ЧПУ. Да все что угодно может произойти. Вручную разбираться и делать редиректы можно, но время стоит дороже и головная боль здесь обеспечена. Проверено мною неоднократно и подтверждено моими клиентами.
      Модуль позволяет очень просто и очень быстро создавать редиректы. Вся работа модуля идет в лайв режиме а это означает то что как только прописали редирект не надо ничего сохранять нажимая какие-то кнопки - все уже работает!
       
      Можно посмотреть видео обзор модуля от автора

      Для создания нового редиректа достаточно зайти в модуль, нажать на кнопку Добавить 301 редирект, ввести старую ссылку и новую. Все уже работает. На это уходит какие-то секунды. Ничего лишнего нет, все сделано для максимальной скорости работы.
      Отдельно хотелось бы акцентировать внимание на продуманный и приятный интерфейс, все визуально понятно и просто.
      Также хотелось бы подчеркнуть высокую скорость работы. Редирект происходит сразу при заходе на сайт не дожидаясь загрузки ядра Opencart что экономит время отклика и не грузит магазин. Модуль тестировали на более чем 100 000 редиректов все работает мгновенно. Если у кого-то будет 1 000 000 редиректов также не проблема
      Если у вас много редиректов в модуле есть живой поиск - просто вводите символы которые есть в редиректах и модуль сразу отобразит что уже есть. Очень удобный инструмент.


      В модуле можно вводить как по одному редиректу, так и сразу много. Есть инструмент импортирования (вкладка Импорт/Экспорт) Экспорт скоро доделаю.
      Для импорта надо вставить редиректы и внизу прописать разделитель, далее нажать кнопку Поехали! После этого редиректы уже работают в магазине. Импортировали 100 000 редиректов все прошло успешно.

      -----------
      Демо
      https://demo23.microdata.pro/
      логин: demo
      пароль: demo777
      просьба посмотреть и ничего не ломать:)
      -----------
      Особенности модуля
      Работает на всех версиях Opencart и php Не использует vqmod ocmod и т.п. (идет вставка своего блока в файл index.php для быстродействия - все полностью безопасно) Не использует ioncube Модуль использует лайв режим, все записывается без подтверждающих кнопок Сохранить, что очень ускоряет работу Все на одной странице и максимально понятно. Вес модуля всего 12КБ Максимально оптимизированный код и конечно же защищенный Качество дополнений - это приоритет Модуль не зависит от кастомизации магазина или от шаблона. Модуль полностью самостоятельный и работает даже на самых перекрученных магазинах Оперативная поддержка Есть импортирование редиректов  
      Все мои дополнения: https://opencartforum.com/profile/18336-exploits/?tab=node_downloads_Files
    • By Exploits
      333.00 руб
      Скачать/Купить дополнение


      Редиректор 301 - супер простой и быстрый модуль для создания редиректов
      Редиректор 301 - это модуль для создания редиректов в Opencart за пару секунд!

      В работающем магазине практически всегда есть какие-то страницы которые надо перенаправить. Это могут быть хвосты от переезда из других движков, это может быть из-за смены структуры меню или системы ЧПУ. Да все что угодно может произойти. Вручную разбираться и делать редиректы можно, но время стоит дороже и головная боль здесь обеспечена. Проверено мною неоднократно и подтверждено моими клиентами.
      Модуль позволяет очень просто и очень быстро создавать редиректы. Вся работа модуля идет в лайв режиме а это означает то что как только прописали редирект не надо ничего сохранять нажимая какие-то кнопки - все уже работает!
       
      Можно посмотреть видео обзор модуля от автора

      Для создания нового редиректа достаточно зайти в модуль, нажать на кнопку Добавить 301 редирект, ввести старую ссылку и новую. Все уже работает. На это уходит какие-то секунды. Ничего лишнего нет, все сделано для максимальной скорости работы.
      Отдельно хотелось бы акцентировать внимание на продуманный и приятный интерфейс, все визуально понятно и просто.
      Также хотелось бы подчеркнуть высокую скорость работы. Редирект происходит сразу при заходе на сайт не дожидаясь загрузки ядра Opencart что экономит время отклика и не грузит магазин. Модуль тестировали на более чем 100 000 редиректов все работает мгновенно. Если у кого-то будет 1 000 000 редиректов также не проблема
      Если у вас много редиректов в модуле есть живой поиск - просто вводите символы которые есть в редиректах и модуль сразу отобразит что уже есть. Очень удобный инструмент.


      В модуле можно вводить как по одному редиректу, так и сразу много. Есть инструмент импортирования (вкладка Импорт/Экспорт) Экспорт скоро доделаю.
      Для импорта надо вставить редиректы и внизу прописать разделитель, далее нажать кнопку Поехали! После этого редиректы уже работают в магазине. Импортировали 100 000 редиректов все прошло успешно.

      -----------
      Демо
      https://demo23.microdata.pro/
      логин: demo
      пароль: demo777
      просьба посмотреть и ничего не ломать:)
      -----------
      Особенности модуля
      Работает на всех версиях Opencart и php Не использует vqmod ocmod и т.п. (идет вставка своего блока в файл index.php для быстродействия - все полностью безопасно) Не использует ioncube Модуль использует лайв режим, все записывается без подтверждающих кнопок Сохранить, что очень ускоряет работу Все на одной странице и максимально понятно. Вес модуля всего 12КБ Максимально оптимизированный код и конечно же защищенный Качество дополнений - это приоритет Модуль не зависит от кастомизации магазина или от шаблона. Модуль полностью самостоятельный и работает даже на самых перекрученных магазинах Оперативная поддержка Есть импортирование редиректов  
      Все мои дополнения: https://opencartforum.com/profile/18336-exploits/?tab=node_downloads_Files
      Добавил Exploits Добавлено 19.06.2019 Категория 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 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 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Да Старая цена  
    • By Exploits
      Скачать/Купить дополнение


      Менеджер 301 редиректов
      Простой, но рабочий модуль 301 редиректа для Opencart
      Что бы сделать 301 редирект надо редактировать файл .htaccess но с этим во многом возникают трудности.
      Этим дополнением я сделал все более удобно
      После установки модуля просто идем в настройки магазина и в первой вкладке видим поле для ввода переадресаций http://prntscr.com/9s5g0i в формате:
      старый-адрес==новый-адресстарый-адрес2==новый   и т.д.
      Все достаточно просто и понятно.
      Установка
      Opencart 1.x = Загружаем файл redirector_1.x.xml в vqmod/xml
      Opencart 2.x = В админке устанавливаем в модификаторах файл из архива redirector_2.x.ocmod.xml, после обновляем модификаторы
      Добавил Exploits Добавлено 19.01.2016 Категория Прочее Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 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 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.х Обращение к серверу разработчика Нет Старая цена  
  • 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.