Auf unserer Seite verwenden wir das Metatag- Modul, um ein kanonisches Meta-Tag anzuzeigen . In der Konfiguration verwenden wir das [current-page:url:absolute]
Token. Dies funktioniert gut, aber das Problem ist, dass dieses Protokoll in der kanonischen URL verwendet wird, unabhängig davon, ob auf die Seite über HTTP oder HTTPS zugegriffen wird.
Für SEO-Zwecke möchten wir, dass die kanonische URL identisch ist und HTTP für beide Protokolle verwendet.
Wie können wir das erreichen?
.htaccess
oder Apache config an HTTPS erzwingen . Problem gelöst.Antworten:
Drupal 7
Sie können implementieren
hook_html_head_alter()
, um Head-Tags zu ändern. Folgendes ist ungetestet, sollte aber den Trick tun:quelle
Mit dem Metatag-Modul können Sie das Token [aktuelle Seite: URL: relativ] anstelle des Tokens [aktuelle Seite: URL: absolut] verwenden.
Ihr kanonisches Tag würde also ungefähr so aussehen: http: //www.mywebsite [aktuelle Seite: URL: relativ]
quelle
Drupal 8
Für Knoten müssen Sie verwenden,
hook_ENTITY_TYPE_view_alter
da dies der Ort ist, an dem sie ursprünglich hinzugefügt wurdenNodeViewController::view()
.Und lassen Sie mich bemerken, dass Sie wahrscheinlich besser dran sind, wenn Sie einfach Ihren gesamten eingehenden Datenverkehr standardmäßig auf SSL umleiten: Wie kann man einfach die gesamte Site HTTPS machen?
Ich habe gerade herausgefunden, dass wir am Ende alle Head - Tags in finden
hook_preprocess_html
in der$variables['page']['#attached']
Anordnung verändert werden.quelle
Nennen Sie mich verrückt und korrigieren Sie mich bitte, wenn ich falsch liege, aber können Sie die URL nicht einfach mit dem HTTP fest codieren?
Ich bin mir sicher, dass mir etwas fehlt, aber wenn Sie die vollständige URL eingeben, anstatt das Token zu verwenden, erhalten Sie diese bestimmte URL als Kanonik für jede Variation der von Drupal erstellten Seite.
Die Einschränkung besteht darin, dass ein Update-Albtraum entsteht, da Sie daran denken müssen, die Kanonik zu ändern, wenn sich der Alias der Seite jemals ändert.
quelle