Авторизация

Как в UMI.CMS изменить адрес домена в sitemap.xml и robots.txt. Изменить HTTP на HTTPS

Внимание! Для версии системы 20 за 2019 год  Если нужно исправить адрес домена в sitemap.xml файл для редактирования находится по адресу: classes/system/utils/SiteMap/Updater.php в методе update адрес находится в строке: $link = $this->getLink($elementId);
дальше читаем статью. После этого обновлять нельзя, иначе слитит.

 

Проблема:  1. Случайно активировал ключ на поддомене. Всё работает, но в карте сайта sitemap.xml выводится адрес поддомена. Это нужно исправить. 

2. Часто бывает нужно установить HTTPS протокол, система работает адекватно с ним, но robots.txt и sitemap.xml его не отображают. robots.txt можно в sbots.php, а чтобы в sitemap.xml автоматически вставлялся HTTPS можно воспользоваться этим методом.
Версия системы: 2.9.7.

Описание: Чтобы это исправить исследуем работу скрипта обновления карты сайта, сначало в js скрипте запускается confirmButtonOkClick(), затем OKCallback() в нём processUpdateSitemap(), где идёт обращение через ajax к методу update_sitemap() по адресу classes/modules/config/__domains.php и в нём запускается updateSiteMap(), который находится в classes/system/subsystems/models/hierarchy/umiHierarchyElement.php

Найдём метод updateSiteMap, в нём строку

$link = $hierarchy->getPathById($this->id, false, false, true);

после неё напишем:
$link = preg_replace('/umi\.domain.ru/', 'domain.ru', $link);

Или если надо сменить протокол с HTTP на HTTPS допишем:
$link = preg_replace('/http/', 'https', $link);

Или если надо дописать перед доменом WWW пишем:
$link = preg_replace('/domain.ru/', 'www.domain.ru', $link);

Сохраним и в модуле "Конфигурация" на вкладке "Домены" обновим карту сайта. Теперь в карте сайта должен вывестись нужный нам домен или протокол.

Исправляем robots.txt

1. Для перехода на https попробуй поменять в config.ini параметр

[system] -> server-protocol = "https" // по умолчанию http

 

2. Не забудьте исправить ссылку на sitemap.xml в robots.txt. Для этого в файле libs/root-src/sbots.php нужно исправить почти последнюю строч, у меня ( в версии 2.9.7 ) она выглядела так:

$buffer->push("Host: {$host} \r\n");

$buffer-push("Sitemap: http://{$host}/sitemap.xml \r\n");

Исправить $host на нужный нам домен.

Ну и чтобы исправить HTTP на HTTPS надо дописать порт

$buffer-push("Sitemap: https://{$host}/sitemap.xml \r\n");

 

После этого обновлять систему нельзя.

[ Saitadmin.ru || с 2006 по текущий год || Санкт-Петербург ]