正規URLにhttpを使用させるにはどうすればよいですか?


10

このページでは、メタタグモジュールを使用して、正規のメタタグを表示します。構成では、[current-page:url:absolute]トークンを使用します。これは正常に機能しますが、問題は、ページがHTTPまたはHTTPSのどちらでアクセスされるかにかかわらず、このプロトコルが正規URLで使用されることです。

SEOの目的では、正規URLを同じにして、両方のプロトコルでHTTPを使用する必要があります。

どうすればこれを達成できますか?


2
Drupalでそれを行う代わりに、デフォルトで、.htaccessまたはApache構成を介して、すべてのトラフィックをHTTPSに強制します。問題が解決しました。
leymannx 2018

回答:


8

Drupal 7

hook_html_head_alter()headタグを変更するために実装できます。以下はテストされていませんが、トリックを行う必要があります:

function MYMODULE_html_head_alter(&$head_elements) {
  foreach ($head_elements as $key => &$tag) {
    if (strpos($key, 'drupal_add_html_head_link:canonical:') === 0) {
      if (strpos('https://', $tag['#attributes']['href']) === 0) {
        $tag['#attributes']['href'] = str_replace('https://', 'http://', $tag['#attributes']['href']);
      }
    }
  }
}

2

メタタグモジュールを使用すると、[current-page:url:absolute]トークンの代わりに[current-page:url:relative]トークンを使用できます。

したがって、正規タグは次のようになります。http://www.mywebsite [current-page:url:relative]


0

Drupal 8

ノードの場合はhook_ENTITY_TYPE_view_alter、最初にから追加された場所として使用する必要がありますNodeViewController::view()

また、デフォルトですべての受信トラフィックをSSLにリダイレクトするだけで、より良い結果が得られることに注意してください。サイト全体をHTTPSにする方法は?

/**
 * Implements hook_ENTITY_TYPE_view_alter().
 */
function MYMODULE_node_view_alter(array &$build, Drupal\Core\Entity\EntityInterface $entity, \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display) {
  if (isset($build['#attached']['html_head_link'])) {
    foreach ($build['#attached']['html_head_link'] as $key => $head) {
      if ((isset($head[0]['rel']) ? $head[0]['rel'] : FALSE) == 'canonical') {

        $url = \Drupal\Core\Url::fromRoute('<current>', [], ['absolute' => 'true'])
          ->toString();

        $url = str_replace('https://', 'http://', $url);

        $build['#attached']['html_head_link'][$key][0]['href'] = $url;
      }
    }
  };
}

最後hook_preprocess_htmlに、$variables['page']['#attached']変更する配列内のすべてのヘッドタグを見つけることがわかりました。


-2

私を狂ったように呼んで、私が間違っている場合は私を修正してください。しかし、HTTPでURLをハードコードすることはできませんか?

何か足りないものがあると私は確信していますが、トークンを使用する代わりに完全なURLをドロップすると、Drupalが作成するすべてのパターンのページの正規URLとして、特定のURLが作成されます。

警告は、ページのエイリアスが変更された場合は正規を変更することを忘れないようにする必要があるため、更新の悪夢が生じることです。


ドメインアクセスを使用する場合など、一部の記事は特定のドメインでのみ利用可能であり、URLをハードコーディングするとデッドリンクが作成されることがあります。
Mołot
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.