Standart URL'yi http kullanmaya zorlamak nasıl?


10

Sayfamızda standart bir meta etiket göstermek için Metatag modülünü kullanıyoruz . Konfigürasyonda [current-page:url:absolute]belirteci kullanıyoruz. Bu iyi çalışıyor, ancak sorun, sayfaya HTTP veya HTTPS tarafından erişilip erişilmediği, bu protokolün kurallı URL'de kullanılmasıdır.

SEO amacıyla standart URL'nin aynı olmasını ve her iki protokol için HTTP kullanmasını istiyoruz.

Bunu nasıl başarabiliriz?


2
Bunu Drupal'da yapmak yerine, varsayılan olarak .htaccessveya Apache config üzerinden varsayılan olarak tüm trafiği HTTPS'ye zorlarım. Sorun çözüldü.
leymannx

Yanıtlar:


8

Drupal 7

hook_html_head_alter()Kafa etiketlerini değiştirmek için uygulayabilirsiniz ; aşağıdakiler test edilmemiştir ancak hile yapmalıdır:

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

Meta etiket modülü ile [current-page: url: absolute] belirteci yerine [current-page: url: relative] belirtecini kullanabilirsiniz.

kurallı etiketiniz şu şekilde olur: http: //www.mywebsite [current-page: url: relative]


0

Drupal 8

Düğümler hook_ENTITY_TYPE_view_alteriçin, başlangıçta eklendikleri yer olduğu için kullanmanız gerekir NodeViewController::view().

Ve tüm gelen trafiğinizi varsayılan olarak SSL'ye yönlendirerek muhtemelen daha iyi olduğunuzu not edeyim: Tüm siteyi HTTPS nasıl basitleştirebilirim?

/**
 * 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;
      }
    }
  };
}

Sadece sonunda biz tüm kafa etiketlerini bulacaksınız öğrendim, hook_preprocess_htmliçinde $variables['page']['#attached']dizi değiştirilecek.


-2

Beni deli olarak adlandır ve yanlışsam lütfen düzeltin, ama URL'yi HTTP ile kodlayamaz mısın?

Eminim eksik bir şey var, ancak jetonu kullanmak yerine tam URL'yi bırakırsanız, Drupal'ın oluşturduğu her sayfa varyasyonu için kanonik olarak belirli bir URL ile sonuçlanırsınız.

Uyarı, sayfanın takma adı değiştiğinde kanonikliği değiştirmeyi hatırlamanız gerektiğinden güncelleme kabusu oluşturmasıdır.


Bazen, Etki Alanı Erişimi kullandığınızda olduğu gibi, bazı makaleler yalnızca belirli alanlarda kullanılabilir ve sabit kodlama URL'si ölü bağlantılar oluşturur.
Mołot
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.