Как включить rel="canonical"

Нужно склеить два сайта http и https, в шаблоне вижу что есть такая строчка кода {if !empty($canonical)}<link rel="canonical" href="{$canonical}"/>{/if}, но так как она не отрабатывает значит $canonical все же пустует.

Как и где включить? Спасибо :)


2 ответа

  • 3
    Михаил Ушенин Webasyst 10 октября 2016 11:18 #

    В шаблоне index.html перед строкой вида

    <span class="pun">{</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">!</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$canonical</span><span class="pun">)}<</span><span class="pln">link rel</span><span class="pun">=</span><span class="str">"canonical"</span><span class="pln"> href</span><span class="pun">=</span><span class="str">"{$canonical}"</span><span class="pun">/>{/</span><span class="kwd">if</span><span class="pun">}</span>

    добавьте

    {$trimmed_absolute_url = $wa->currentUrl(true, true)}
    {if strpos($trimmed_absolute_url, 'http://') === 0}
        {if empty($canonical)}
            {$canonical_http = $trimmed_absolute_url}
        {else}
            {$canonical_http = $canonical}
        {/if}
    {/if}
    {if !empty($canonical_http)}
        {$canonical = $canonical_http|regex_replace:'/^http:\/\//':'https://'}
    {/if}
    • +1
      Михаил Ушенин Михаил Ушенин Webasyst 10 октября 2016 11:19 #

      А вообще вам, возможно, стоит просто 301-й редирект настроить.

      • +1
        Евгений Филатов Евгений Филатов 10 октября 2016 11:30 #

        Не могу настроит 301 редирект (пока что), так как накосячил ранее с ним, и теперь мне необходимо чтобы обе версии сайта были проиндексированы.

    • +3
      Евгений Филатов Евгений Филатов 10 октября 2016 11:28 #

      не работает ваш вариант, в коде ничего не появляется.

      Я делал вообще примитивно

      <link rel="canonical" href="https://domain.ru{$wa->currentUrl()}"/>

      И в обоих версиях сайтов каноникл был с https, но проблема в том, что в такой обертке на страницах типа categoty/?page= в каноникл прописывается вся чать урла..

      • +1
        Михаил Ушенин Михаил Ушенин Webasyst 10 октября 2016 11:29 #

        Была ошибка в коде. Только что обновил — попробуйте.

        • +1
          Евгений Филатов Евгений Филатов 10 октября 2016 11:33 #

          Cупер, все работает! Спасибо!

          • +1
            Михаил Ушенин Михаил Ушенин Webasyst 10 октября 2016 11:41 #

            Этот вариант работает так, что для страниц постраничной навигации с параметром вида ?page=*** canonical формируется без этого параметра.

            Если нужно, чтобы параметр вида ?page=*** не отбрасывался в canonical, используйте немного расширенный вариант кода:

            {$trimmed_absolute_url = $wa->currentUrl(true, true)}
            {if strpos($trimmed_absolute_url, 'http://') === 0}
                {if empty($canonical)}
                    {if $wa->get('page', 1) > 1}
                        {$canonical_http = $wa->currentUrl(true)}
                    {else}
                        {$canonical_http = $trimmed_absolute_url}
                    {/if}
                {else}
                    {$canonical_http = $canonical}
                {/if}
            {/if}
            {if !empty($canonical_http)}
                {$canonical = $canonical_http|regex_replace:'/^http:\/\//':'https://'}
            {/if}
    • +1
      Юра Максимекно Юра Максимекно 14 марта 2018 10:38 #

      Извините, но <span class="pun">... у себя в файле не нашел. Может это для какого-то определенной темы?

  • -3
    Эрик Webasyst 9 октября 2016 18:05 #

    Подробную поддержку по редактированию исходного кода программных продуктов вы также можете получить от экспертов Webasyst.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите