Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

sitemap.xml и seo_pro ocStore 2.3.0.2


 Поделиться

Рекомендованные сообщения

В версии ocStore 2.3.0.2 если включен seo_pro, при запросе sitemap.xml кидает на index.php?route=extension/feed/google_sitemap

сравнив код  seo_pro от предыдущей версии, заметил что нет проверки в методе validate

if (ltrim($this->request->server['REQUEST_URI'], '/') == 'sitemap.xml') {
  $this->request->get['route'] = 'extension/feed/google_sitemap';
  return;
}

Добавлением этих строк и лечится

  • +1 5
Ссылка на комментарий
Поделиться на других сайтах


впрочем, вероятно это было исключено не зря

 

при включении этого в seopro по ссылке sitemap.xml будет автоматом генериться новый сайтмап из фида

что приводит к проблемам, если автоматическая генерация не нужна

 

например - в случае размещения предварительно созданного статического файла sitemap.xml в корне

 

по-крайней мере, использовал именно такой способ для снижения нагрузки в свое время

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Если и так, то редирект из htaccess тоже бы убрать

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


в .htaccess - убирается добавлением одного комментирующего символа в начало строки

 

можно, конечно, пойти дальше и добавить в seopro возможность выбора фидов через интерфейс

типа чекбокс и строка с адресом фида

только нужно ли?

Ссылка на комментарий
Поделиться на других сайтах

  • 10 месяцев спустя...
В 17.12.2016 в 19:17, thentru сказал:

В версии ocStore 2.3.0.2 если включен seo_pro, при запросе sitemap.xml кидает на index.php?route=extension/feed/google_sitemap

сравнив код  seo_pro от предыдущей версии, заметил что нет проверки в методе validate


if (ltrim($this->request->server['REQUEST_URI'], '/') == 'sitemap.xml') {
  $this->request->get['route'] = 'extension/feed/google_sitemap';
  return;
}

Добавлением этих строк и лечится

 

Здравствуйте, подскажите пожалуйста, правильно выполнил? Добавил строки сюда

 

    public function validate() {
        if (!$this->validatePermission()) {
            $this->error['warning'] = $this->language->get('error_permission');
        }
         return !$this->error;

if (ltrim($this->request->server['REQUEST_URI'], '/') == 'sitemap.xml') {
  $this->request->get['route'] = 'extension/feed/yandex_feed';
  return;

}
}

добавил строки в файл admin/controller/octeam_tools

 

в файле .htacess

RewriteRule ^sitemap.xml$ index.php?route=extension/feed/yandex_feed [L]

но при переходе на sitemap.xml все равно меняется конечный урл на /index.php?route=extension/feed/yandex_feed

 

Помогите пожалуйста, что делаю не так?

 

 

добавлено позже: полез в файл админки, а не надо было.

Изменено пользователем Guava
Ссылка на комментарий
Поделиться на других сайтах


@Guava править нужно файл /catalog/controller/startup/seo_pro.php

  • +1 2
Ссылка на комментарий
Поделиться на других сайтах


38 минут назад, thentru сказал:

@Guava править нужно файл /catalog/controller/startup/seo_pro.php

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

Ссылка на комментарий
Поделиться на других сайтах


  • 4 недели спустя...

Уважаемые, профи...Помогите разобраться немного в этом вопросе новичку, пытаюсь разобраться, но много чего непонятного.

На примере ocStore 2.3.0.2.3.

 

Путь к карте сайта имеет вид

http://www.site.ru/index.php?route=extension/feed/google_sitemap

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

http://www./site.ru/sitemap.xml

Вы привели в пример следующий код

On 12.11.2017 at 9:28 PM, Guava said:

public function validate() { if (!$this->validatePermission()) { $this->error['warning'] = $this->language->get('error_permission'); } return !$this->error; if (ltrim($this->request->server['REQUEST_URI'], '/') == 'sitemap.xml') { $this->request->get['route'] = 'extension/feed/yandex_feed'; return; } }

, который нужно добавить в файле  seo_pro.php /catalog/controller/startup/seo_pro.php

Изначально строчка public function validate() в этом файле отсутствует.

В этом случае, нужно самому внести в любом месте файла seo_pro.php эту функцию validate() ?

 

Второй вопрос. Как понять, что карта сайта заработала ? Это происходит после индексации роботами или что-то должно быть видно юзеру после установки системы и запроса http://www./site.ru/sitemap.xml.

Когда я в строке браузера ввожу http://www.site.ru/index.php?route=extension/feed/google_sitemap, показывает белый экран.

 

 

 

 

Ссылка на комментарий
Поделиться на других сайтах


1 hour ago, Vitulus said:

Второй вопрос. Как понять, что карта сайта заработала ? Это происходит после индексации роботами или что-то должно быть видно юзеру после установки системы и запроса http://www./site.ru/sitemap.xml.

Когда я в строке браузера ввожу http://www.site.ru/index.php?route=extension/feed/google_sitemap, показывает белый экран.

   С этим моментом разобрался.

   Но вот при вводе http://www.****доемн/sitemap.xml всё равно перенаправляет на строку вида index.php?route=extension/feed/google_sitemap :(

Ссылка на комментарий
Поделиться на других сайтах


в сеопро в методе validate добавить исключение

		if (ltrim($this->request->server['REQUEST_URI'], '/') == 'sitemap.xml') {
			$this->request->get['route'] = 'extension/feed/google_sitemap_fast';
			return;
		}

И это было в первом посте

Ссылка на комментарий
Поделиться на других сайтах

57 minutes ago, chukcha said:

И это было в первом посте

 

В том-то и дело, что я всё внимательно прочитал, но, где находится этот метод validate в самом файле seo_pro.php ?

   Я не коддер, но пытаюсь разобраться читая пояснения, но порой они общего характера.

    

Через редактор, я нахожу только один блок, где, встречается слово validate

 

private function validate () {
        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_ssl = substr($this->config->get('config_ssl'), 0, $this->strpos_offset('/', $this->config->get('config_ssl'), 3) + 1);
            $url = str_replace('&', '&', $config_ssl . ltrim($this->request->server['REQUEST_URI'], '/'));
            $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), true));
        } else {
            $config_url = substr($this->config->get('config_url'), 0, $this->strpos_offset('/', $this->config->get('config_url'), 3) + 1);
            $url = str_replace('&', '&', $config_url . ltrim($this->request->server['REQUEST_URI'], '/'));
            $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), false));
        }

        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);
        }
    }

Ссылка на комментарий
Поделиться на других сайтах


       private function validate() {
                if (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') {
                        return;
                }
                if (ltrim($this->request->server['REQUEST_URI'], '/') =='sitemap.xml') {
                        $this->request->get['route'] = 'extension/feed/yandex_feed';
                        return;
                }
                        if (ltrim($this->request->server['REQUEST_URI'], '/') =='sitemap_google.xml') {
                        $this->request->get['route'] = 'extension/feed/sitemap_pro';
                        return;
                }

то, что выше правка сео про на catalog/controller/startup/seo_pro.php - это для сайтмапа чтобы выводился по нужной ссылке. Важно понимать что у меня свои пути, под модуль Снастика. Если у вас другой адрес сайтмапа - подкорректируйте под себя.

 

затем делал правку + добавление еще одной строки для сайтмапа под гугл в .htacess 

 

RewriteRule ^sitemap.xml$ index.php?route=extension/feed/yandex_feed [L]
RewriteRule ^sitemap_google.xml$ index.php?route=extension/feed/sitemap_pro [L]

и я кстати не знаю точно, но вроде карта и так работает, просто мне так было удобнее, а более важные задачи по магазину просто были приостановлены по некоторым причинам. Вот и решил заняться мелочами на тот момент.
@Vitulus 

 

4 часа назад, Vitulus сказал:

Второй вопрос. Как понять, что карта сайта заработала ? Это происходит после индексации роботами или что-то должно быть видно юзеру после установки системы и запроса http://www./site.ru/sitemap.xml.

Когда я в строке браузера ввожу http://www.site.ru/index.php?route=extension/feed/google_sitemap, показывает белый экран.

 

сколько у вас товаров? может он генерируется долго или стандартный.

Ссылка на комментарий
Поделиться на других сайтах


32 minutes ago, Guava said:

то, что выше правка сео про на catalog/controller/startup/seo_pro.php - это для сайтмапа чтобы выводился по нужной ссылке.

   сегодня просто остался без сил :wacko:, завтра обязательно Ваш код попробую вставить в . Спасибо, что отозвались и что-то предметное написали.

34 minutes ago, Guava said:

то, что выше правка сео про на catalog/controller/startup/seo_pro.php - это для сайтмапа чтобы выводился по нужной ссылке.

мне как раз и нужно, чтобы по ссылке выводился "укороченной", без этого хлама index.php?route=

   

35 minutes ago, Guava said:

и я кстати не знаю точно, но вроде карта и так работает

Да, разбираюсь впервые, да работает сразу, но при условии, что в файле robots прописан путь к карте сайта (я просто не знал, что нужно ещё что-то прописывать, поэтому сразу ничего не увидел).

 

37 minutes ago, Guava said:

Если у вас другой адрес сайтмапа - подкорректируйте под себя.

У меня формируется в OCStore стандарный путь к сайтмапу ...http://www.hobbylife.com.ua/index.php?route=extension/feed/google_sitemap

 

   В файле .htaccess только такие строки

 

# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/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]

 

   robots.txt в базовой версии вообще хиленький я так понимаю.

  

User-agent: *
Disallow: /*route=account/
Disallow: /*route=affiliate/
Disallow: /*route=checkout/
Disallow: /*route=product/search
Disallow: /index.php?route=product/product*&manufacturer_id=
Disallow: /admin
Disallow: /catalog
Disallow: /system
Disallow: /*?sort=
Disallow: /*&sort=
Disallow: /*?order=
Disallow: /*&order=
Disallow: /*?limit=
Disallow: /*&limit=
Disallow: /*?filter=
Disallow: /*&filter=
Disallow: /*?filter_name=
Disallow: /*&filter_name=
Disallow: /*?filter_sub_category=
Disallow: /*&filter_sub_category=
Disallow: /*?filter_description=
Disallow: /*&filter_description=
Disallow: /*?tracking=
Disallow: /*&tracking=

User-agent: Yandex
Disallow: /*route=account/
Disallow: /*route=affiliate/
Disallow: /*route=checkout/
Disallow: /*route=product/search
Disallow: /index.php?route=product/product*&manufacturer_id=
Disallow: /admin
Disallow: /catalog
Disallow: /system
Disallow: /*?sort=
Disallow: /*&sort=
Disallow: /*?order=
Disallow: /*&order=
Disallow: /*?limit=
Disallow: /*&limit=
Disallow: /*?filter=
Disallow: /*&filter=
Disallow: /*?filter_name=
Disallow: /*&filter_name=
Disallow: /*?filter_sub_category=
Disallow: /*&filter_sub_category=
Disallow: /*?filter_description=
Disallow: /*&filter_description=
Clean-param: tracking

 

         Но что я до конца ещё не понимаю, карта сайта для Гугл воспринимается иначе, чем для Яндекс, получается, что должно быть две карты ?

Посмотрел ролик, там сказано, что ссылку на карту нужно указывать в самом конце текста в файле robots.txt.

 

 

48 minutes ago, Guava said:

сколько у вас товаров? может он генерируется долго или стандартный.

 

Да, генерируется не так быстро, но товаров, немного (планируется до 4-6 тыс.).

 

Ссылка на комментарий
Поделиться на других сайтах


16 часов назад, Vitulus сказал:

  Но что я до конца ещё не понимаю, карта сайта для Гугл воспринимается иначе, чем для Яндекс, получается, что должно быть две карты ?

Посмотрел ролик, там сказано, что ссылку на карту нужно указывать в самом конце текста в файле robots.txt.

 

не должно быть, а может быть две. Нет никаких обязательств. Просто у гугл карты немного больше возможностей в виде  карты изображений например.

 

16 часов назад, Vitulus сказал:

В файле .htaccess только такие строки

правильно, в вашем случае тогда изменений делать не надо, они уже есть. Редактируйте только catalog/controller/startup/seo_pro.php 

 

 

16 часов назад, Vitulus сказал:

robots.txt в базовой версии вообще хиленький я так понимаю.

нет, нормальный роботс. Почему решили что хиленький? "Нормальный роботс" или "Хиленький роботс" - само по себе неправильное понятие. У всех магазинов свои особенности, не бывает хорошего или плохого роботс.  

Изменено пользователем Guava
Ссылка на комментарий
Поделиться на других сайтах


On 10.12.2017 at 4:59 PM, Guava said:

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

 

      Вот Вы правильно уловили мою мысль. Я как раз и задал вопрос именно о необходимости создавать две карты, т.е. два разных пути...Потому как прочитал, что карта "google" не воспринимается Яндекс, именно из-за значения image.

         

On 10.12.2017 at 4:59 PM, Guava said:

правильно, в вашем случае тогда изменений делать не надо, они уже есть.

 

Почему не надо ? У Вас есть строка в файле .htaccess

RewriteRule ^sitemap.xml$ index.php?route=extension/feed/yandex_feed [L]

а у меня её нет. Т.е. я так понимаю, что это строка для яндекса.

 

On 10.12.2017 at 4:59 PM, Guava said:

нет, нормальный роботс. Почему решили что хиленький?

 

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

Я прочитал, что в конце файла роботс, должно быть прописано таким образом (с учетом своих значений):

Sitemap: https://site.ru/sitemap.xml
Host: https://site.ru

 

 

 

 

 

Ссылка на комментарий
Поделиться на других сайтах


52 минуты назад, Vitulus сказал:

а у меня её нет. Т.е. я так понимаю, что это строка для яндекса.

вы очень сильно запутались и скорее всего не понимаете сами, зачем это делается.

 

В 10.12.2017 в 00:29, Vitulus сказал:

У меня формируется в OCStore стандарный путь к сайтмапу ...http://www.hobbylife.com.ua/index.php?route=extension/feed/google_sitemap

это вы написали

 

В 10.12.2017 в 00:29, Vitulus сказал:

RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]

эта строка у вас уже есть, это вы написали.

У вас стандартный модуль для сайтмап, а у меня нет (я покупал посильнее, т.к. стандартный виснет при 10 000 товаров) поэтому я вносил изменения.

 

в вашем случае нужно только внести корректировки как указано тут в теме в файле

 catalog/controller/startup/seo_pro.php

 

и сайтмап начнет открывваться по ссылке /sitemap.xml 

(возможно после обновления кеша или сразу, я не помню честно говоря - не подскажу, сразу должно работать или кеш очищать надо)

 

 

Ссылка на комментарий
Поделиться на других сайтах


5 hours ago, Guava said:

вы очень сильно запутались и скорее всего не понимаете сами, зачем это делается.

   Да, я изначально не смог сделать так, чтобы стандартный путь index.php?route=extension/feed/google_sitemap приобрел такой вид sitemap.xml.

   Но запутался (а точнее не знал) я именно в том, как мне сделать две карты - одну для гугл, а другую для яндекс.

    С гугл (как прописывать) более менее понятно, я имею ввиду тот путь http://www.***/index.php?route=extension/feed/google_sitemap, который формируется из коробки "OCStore".

   Но Вы в своём коде, везде упоминали yandex_feed, поскольку стандарный OCStore формирует путь карты для гугл, но не для Яндекса, я и начал задавать вопрос, а как дополнительно создать ещё карту для Яндекса (чтобы избежать конфликта с image, когда карта начнет индексироваться Яндекс) ?

   

5 hours ago, Guava said:

У вас стандартный модуль для сайтмап, а у меня нет (я покупал посильнее, т.к. стандартный виснет при 10 000 товаров) поэтому я вносил изменения.

     Поэтому вне зависимости от покупки модуля, получается, что каждому пользователю нужно дорабатывать код и под Яндекс, потому что о нем в файле  .htaccess ни слова.  

5 hours ago, Guava said:

У вас стандартный модуль для сайтмап, а у меня нет (я покупал посильнее,

  Скажите, пожалуйста, как называется это модуль ?

 

  

 

Ссылка на комментарий
Поделиться на других сайтах


@Vitulus

Цитата

  Поэтому вне зависимости от покупки модуля, получается, что каждому пользователю нужно дорабатывать код и под Яндекс, потому что о нем в файле  .htaccess ни слова.  

не путайте нужно, и хотелось бы. ссылка на sitemap может быть любой, и такая как есть по стандарту - вроде как тоже подходит (если это ктото читает и я ошибаюсь - просьба сказать). Или её не принимает кабинет вебмастера гугл/яндекс?

Я делал ссылку вида Sitemap.xml скорее из соображений удобства + у меня переезд сайта, и хотел исключить по максимуму различающиеся мелочи в оксторе. И так, просто привычнее.

 

ссылка на модуль генерирующий две карты - для гугл и для яндекс отдельно: 

 

Ссылка на комментарий
Поделиться на других сайтах


Спасибо за инструкцию, файл нормально открывается по адресу site/sitemap.xml

Но после подписки в ГВМ выдает Ошибку. см аттач. 

Причем по своей же ссылке "Файл Sitemap: " нормально открывает карту в новой вкладке...

Подскажите, кто встречал и как бороть?? Спасибо!

 

ошибка_sitemap_xml.PNG

Изменено пользователем Andrey777888
Ссылка на комментарий
Поделиться на других сайтах


  • 5 месяцев спустя...

Почему-то по site/sitemap.xml отдает 404. 

Правил seo pro и .htaccess, по полному адресу открывается нормально. 

Кто-то сталкивался с таким? :)

Upd

Странно, сейчас все ок - похоже было какое-то кэширование.

Изменено пользователем ZyXeL
Ссылка на комментарий
Поделиться на других сайтах


  • 1 год спустя...

Подтверждаю то, что писал  ZyXeL.

ocStore 2.3.0.2.3 ,

правил seopro как написано в первом посте , 

htaccess - заккоментировал строчку "#RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]"

еще переименовал /sitemap/ в /html_sitemap/ (через Инструмент управления Seo-Url) , чтобы они не пересекались с sitemap.xml

В результате site/sitemap.xml отдает 404 (запрашиваемая страница не найдена) !!!

И в отличии от предыдущего ZyXeL у меня никакого чуда не происходит и самой собой ОК не становится. 

 

Народ, помогите справиться с этой коварной задачей. А иначе получается, что рабочего решения нет.

Ссылка на комментарий
Поделиться на других сайтах

14 часов назад, mister12 сказал:

Подтверждаю то, что писал  ZyXeL.

ocStore 2.3.0.2.3 ,

правил seopro как написано в первом посте , 

htaccess - заккоментировал строчку "#RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]"

еще переименовал /sitemap/ в /html_sitemap/ (через Инструмент управления Seo-Url) , чтобы они не пересекались с sitemap.xml

В результате site/sitemap.xml отдает 404 (запрашиваемая страница не найдена) !!!

И в отличии от предыдущего ZyXeL у меня никакого чуда не происходит и самой собой ОК не становится. 

 

Народ, помогите справиться с этой коварной задачей. А иначе получается, что рабочего решения нет.

 

А вот строчку в htaccess не нужно было комментировать.

И в seo_pro неплохо было бы добавить вот такое: 

 

        if (isset($this->request->get['route']) && $this->request->get['route'] == 'extension/feed/google_sitemap') {
            return;
        }

  • +1 2
Ссылка на комментарий
Поделиться на других сайтах


1 час назад, Yoda сказал:

А вот строчку в htaccess не нужно было комментировать.

И в seo_pro неплохо было бы добавить вот такое: 

 

        if (isset($this->request->get['route']) && $this->request->get['route'] == 'extension/feed/google_sitemap') {
            return;
        }

 

Вот! Вот теперь всё заработало! Огромная благодарность. А без этой строчки не работало! Я проверял даже на чистом ocstore!

 

Еще раз резюмирую что нужно сделать, чтобы заработало в ocStore 2.3.0.2.3 .

В /catalog/controller/startup/seo_pro.php Добавляем после  

	if (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') {
		return;
	}

это

	if (ltrim($this->request->server['REQUEST_URI'], '/') == 'sitemap.xml') {
		$this->request->get['route'] = 'extension/feed/google_sitemap';
		return;
	}
	if (isset($this->request->get['route']) && $this->request->get['route'] == 'extension/feed/google_sitemap') {
            return;
        }

И получаем работающий site/sitemap.xml , который даже не конфликтует с HTML-картой /sitemap/

Ссылка на комментарий
Поделиться на других сайтах

if (ltrim($this->request->server['REQUEST_URI'], '/') == 'sitemap.xml') {
		$this->request->get['route'] = 'extension/feed/google_sitemap';
		return;
	}

Это по моему лишнее. При наличии реврайта в htaccess.

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.