Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

sitemap.xml и seo_pro ocStore 2.3.0.2


Recommended Posts

В версии 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 - убирается добавлением одного комментирующего символа в начало строки

 

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

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

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

Надіслати
Поділитися на інших сайтах

  • 10 months later...
В 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
Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

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

На примере 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 months later...

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

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

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

Upd

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

Змінено користувачем ZyXeL
Надіслати
Поділитися на інших сайтах


  • 1 year later...

Подтверждаю то, что писал  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/

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.