На нашей странице мы используем модуль Metatag, чтобы показать канонический метатег. В конфигурации мы используем [current-page:url:absolute]
токен. Это прекрасно работает, но проблема в том, что при доступе к странице по HTTP или HTTPS этот протокол используется в каноническом URL.
В целях SEO мы хотим, чтобы канонический URL был одинаковым, и используем HTTP для обоих протоколов.
Как мы можем достичь этого?
.htaccess
конфигурацию Apache. Задача решена.Ответы:
Drupal 7
Вы можете реализовать,
hook_html_head_alter()
чтобы изменить заголовки тегов; следующее не проверено, но должно сработать:источник
С модулем metatag вы можете использовать токен [current-page: url :lative] вместо токена [current-page: url: absolute].
поэтому ваш канонический тег станет примерно таким: http: //www.mywebsite [current-page: url: родственник]
источник
Drupal 8
Для узлов вы должны использовать
hook_ENTITY_TYPE_view_alter
это место, откуда они изначально были добавленыNodeViewController::view()
.И позвольте мне отметить, что вам, вероятно, лучше, просто перенаправив весь ваш входящий трафик на SSL по умолчанию: как просто сделать весь сайт HTTPS?
Я только что узнал, что в конце мы найдем все теги head
hook_preprocess_html
в$variables['page']['#attached']
массиве, которые нужно изменить.источник
Назовите меня сумасшедшим и поправьте меня, если я ошибаюсь, но вы не можете просто жестко закодировать URL с помощью HTTP?
Я уверен, что кое-что мне не хватает, но если вы укажете полный URL вместо того, чтобы использовать токен, вы получите этот конкретный URL как канонический для каждого варианта страницы, создаваемой Drupal.
Предостережение заключается в том, что он создает кошмар обновления, так как вы должны помнить, чтобы изменить канонический, если псевдоним страницы когда-либо изменится.
источник