Проблема с индексацией - "Документ является неканоническим"

Пишите о найденных ошибках в эту тему

Модераторы: Xpycm, Koduc

Правила форума
ВНИМАНИЕ! Форум не является средством гарантированной поддержки клиентов и пользователей. Поэтому на быстрый ответ тут рассчитывать не нужно, как и на ответ вообще. Сотрудники отвечают по мере своих возможностей.

На форуме действует ограничение в 3 сообщения / сутки.
Если Вы хотите сказать "спасибо", то воспользуйтесь функцией "Повысить репутацию" - зелёная иконка "плюс" под ником ответившего.

Проблема с индексацией - "Документ является неканоническим"

Сообщение andipas » 10 июн 2013, 08:49

Возможная причина выпадения страниц из индекса, канонические урлы, подробнее о них можно узнать здесь - http://help.yandex.ru/webmaster/?id=1127756

Попробуем убрать их с главной и при просмотре объявлений.

В файле - /protected/controllers/SiteController.php методе actionIndex()
Заменяем код:
Код: Выделить всё

$canonicalUrl 
= Yii::app()->getBaseUrl(true);
if(!
isFree()){
    $canonicalUrl .= '/'.Yii::app()->language;
}
Yii::app()->clientScript->registerLinkTag('canonical', null, $canonicalUrl);
$this->alreadyTagCanonical = true;
 

на
Код: Выделить всё
if(!isFree() && !isset($_GET['lang'])){
    $canonicalUrl = Yii::app()->getBaseUrl(true);

    $canonicalUrl .= '/'.Yii::app()->language;
    Yii::app()->clientScript->registerLinkTag('canonical', null, $canonicalUrl);
}
 


Т.е в итоге должно выглядеть так:
Код: Выделить всё
public function actionIndex() {
    //$dependency = new CDbCacheDependency('SELECT date_updated FROM {{menu}} WHERE id = "1"');
    $page = Menu::model()->/* cache(param('cachingTime', 1209600), $dependency)-> */findByPk(1);


    if(!isFree() && !isset($_GET['lang'])){
        $canonicalUrl = Yii::app()->getBaseUrl(true);

        $canonicalUrl .= '/'.Yii::app()->language;
        Yii::app()->clientScript->registerLinkTag('canonical', null, $canonicalUrl);
    }

    if (isset($_POST['is_ajax'])) {
        $this->renderPartial('index', array('page' => $page), false, true);
    } else {
        $this->render('index', array('page' => $page));
    }
}
 



В файле - /protected/modules/apartments/controllers/MainController.php
Удалить код (если он есть):
Код: Выделить всё

Yii
::app()->clientScript->registerLinkTag('canonical', null, $apartment->getUrl());
$this->alreadyTagCanonical = true;
 


В файле /protected/modules/menumanager/controllers/MainController.php
Удалить код (если он есть):
Код: Выделить всё

Yii
::app()->clientScript->registerLinkTag('canonical', null, $model->getUrl());
$this->alreadyTagCanonical = true;
 


В файле /protected/components/Controller.php
Удалить код:
Код: Выделить всё

public $alreadyTagCanonical 
= false;
 


В файле /protected/modules/apartments/helpers/apartmentsHelper.php
Удалить код:
Код: Выделить всё

        if
(Yii::app()->getRequest('sort') || Yii::app()->getRequest('page')){
            if (!Yii::app()->controller->alreadyTagCanonical) {
                $href = Yii::app()->getBaseUrl(true).'/'.Yii::app()->request->getPathInfo();
                Yii::app()->clientScript->registerLinkTag('canonical', null, $href);
                unset($href);
            }
        }
 


В файле /protected/modules/quicksearch/controllers/MainController.php
В методы public function actionIndex и public function actionMainsearch добавить код:
Код: Выделить всё

        $href 
= Yii::app()->getBaseUrl(true).'/'.Yii::app()->request->getPathInfo();
        Yii::app()->clientScript->registerLinkTag('canonical', null, $href);
        unset($href);
 
Часто задаваемые вопросы. Для правки файлов notepad++, netbeans, phpStorm. Для правки CSS firebug.
Аватара пользователя
andipas
Разработчик
Разработчик
 
Сообщения: 695
Зарегистрирован: 28 дек 2011, 22:37
Очки репутации: 30

Re: Проблема с индексацией - "Документ является неканоничес

Сообщение vanred79 » 10 июн 2013, 12:46

Добрый день! В версии 1.3 тоже надо исправлять? Или это касается только 1.4
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2

Re: Проблема с индексацией - "Документ является неканоничес

Сообщение Xpycm » 10 июн 2013, 14:06

Исправления для бесплатной версии 1.3:

Файл protected\modules\apartments\helpers\apartmentsHelper.php
удаляем:
Код: Выделить всё
if(Yii::app()->getRequest('sort') || Yii::app()->getRequest('page')){
    $href = Yii::app()->getBaseUrl(true).'/'.Yii::app()->request->getPathInfo();
    Yii::app()->clientScript->registerLinkTag('canonical', null, $href);
    unset($href);
}
 


Файл protected\modules\quicksearch\controllers\MainController.php
в начало метода (до $criteria = new CDbCriteria;) actionIndex() и начало метода (до $criteria = new CDbCriteria;) actionMainsearch()
добавьте:
Код: Выделить всё
$href = Yii::app()->getBaseUrl(true).'/'.Yii::app()->request->getPathInfo();
Yii::app()->clientScript->registerLinkTag('canonical', null, $href);
unset(
$href); 


Для платной версии 1.3:
Помимо указанных выше действий (для бесплатной версии) добавьте в метод actionIndex() файла protected\controllers\SiteController.php :
Код: Выделить всё
if(!isset($_GET['lang'])){
    $canonicalUrl = Yii::app()->getBaseUrl(true);

    $canonicalUrl .= '/'.Yii::app()->language;
    Yii::app()->clientScript->registerLinkTag('canonical', null, $canonicalUrl);
    unset($canonicalUrl);
}
 

, т.е получится в итоге:
Код: Выделить всё
public function actionIndex() {
    //$dependency = new CDbCacheDependency('SELECT date_updated FROM {{menu}} WHERE id = "1"');
    $page = Menu::model()->/* cache(param('cachingTime', 1209600), $dependency)-> */findByPk(1);

    if(!isset($_GET['lang'])){
        $canonicalUrl = Yii::app()->getBaseUrl(true);

        $canonicalUrl .= '/'.Yii::app()->language;
        Yii::app()->clientScript->registerLinkTag('canonical', null, $canonicalUrl);
        unset($canonicalUrl);
    }
    
    if 
(isset($_POST['is_ajax'])) {
        $this->renderPartial('index', array('page' => $page), false, true);
    } else {
        $this->render('index', array('page' => $page));
    }
}
 
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Проблема с индексацией - "Документ является неканоничес

Сообщение SVV » 10 июн 2013, 19:53

А можно выложить архив с исправлениями? А то в ручном режиме какая то неразбериха получается.
SVV
Незнакомец
 
Сообщения: 3
Зарегистрирован: 10 июн 2013, 19:51
Очки репутации: 0

Re: Проблема с индексацией - "Документ является неканоничес

Сообщение Xpycm » 10 июн 2013, 20:37

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

Файлы архивами выложим завтра, без проблем. Архивы будут только для двух версий 1.4.3 и 1.3.2 ( для версий: 1.3.0, 1.3.1, 1.4.0, 1.4.1, 1.4.2 архивов не будет )

Узнать версию можно по копирайтам, например, в файле protected/components/Controller.php в самом верху - строка "version"
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Проблема с индексацией - "Документ является неканоничес

Сообщение Xpycm » 11 июн 2013, 09:39

Исправление проблемы с каноническими ссылками.

Для версии 1.4.3 ( платной и бесплатной )- http://static.monoray.ru/_fix_canonical ... -06-11.zip
Для версии 1.3.2 ( бесплатной) - http://static.monoray.ru/_fix_canonical ... -06-11.zip

Скачайте архив и заменяйте файлами из архива.

Перед заменой новыми файлами мы рекомендуем сохранить старые копии файлов (сделать бэкап).
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50


Вернуться в Ошибки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron