Na naszej stronie używamy modułu Metatag do wyświetlania kanonicznego metatagu. W konfiguracji używamy [current-page:url:absolute]
tokena. Działa to dobrze, ale problem polega na tym, że niezależnie od tego, czy strona uzyskuje dostęp przez HTTP lub HTTPS, ten protokół jest używany w kanonicznym adresie URL.
Dla celów SEO chcemy, aby kanoniczny adres URL był taki sam i używał HTTP dla obu protokołów.
Jak możemy to osiągnąć?
.htaccess
konfigurację lub Apache. Problem rozwiązany.Odpowiedzi:
Drupal 7
Możesz zaimplementować
hook_html_head_alter()
zmianę tagów głowy; następujące rzeczy nie są testowane, ale powinny wystarczyć:źródło
Za pomocą modułu metatagu można użyć tokena [current-page: url: relative] zamiast tokenu [current-page: url: bezwzględny].
więc twój kanoniczny tag mógłby wyglądać następująco: http: //www.mywebsite [current-page: url: relative]
źródło
Drupal 8
W przypadku węzłów musisz użyć,
hook_ENTITY_TYPE_view_alter
ponieważ jest to miejsce, z którego zostały początkowo dodaneNodeViewController::view()
.I proszę zauważyć, że prawdopodobnie lepiej jest, po prostu domyślnie przekierowując cały ruch przychodzący na SSL: Jak po prostu zrobić całą witrynę HTTPS?
Właśnie się dowiedziałem, że w końcu znajdziemy wszystkie znaczniki head
hook_preprocess_html
w$variables['page']['#attached']
tablicy, które należy zmienić.źródło
Nazywaj mnie szalonym i popraw mnie, jeśli się mylę, ale czy nie możesz po prostu zakodować adresu URL za pomocą HTTP?
Jestem pewien, że coś mi brakuje, ale jeśli wpiszesz pełny adres URL zamiast tokena, skończysz na tym konkretnym adresie URL jako kanonicznym dla każdej odmiany strony, którą tworzy Drupal.
Zastrzeżenie polega na tym, że tworzy koszmar aktualizacji, ponieważ musisz pamiętać, aby zmienić kanoniczny, jeśli alias strony kiedykolwiek się zmieni.
źródło