Http का उपयोग करने के लिए कैनोनिकल URL को कैसे मजबूर करें?


10

हमारे पृष्ठ पर हम एक मेटाबॉलिक मेटा टैग दिखाने के लिए मेटाटैग मॉड्यूल का उपयोग करते हैं । कॉन्फ़िगरेशन में हम [current-page:url:absolute]टोकन का उपयोग करते हैं । यह ठीक काम करता है, लेकिन समस्या यह है कि पेज HTTP या HTTPS द्वारा एक्सेस किया जाता है या नहीं, यह प्रोटोकॉल कैनोनिकल URL में उपयोग किया जाता है।

एसईओ प्रयोजनों के लिए हम चाहते हैं कि कैनोनिकल URL समान हो और दोनों प्रोटोकॉल के लिए HTTP का उपयोग करें।

हम इसे कैसे प्राप्त कर सकते हैं?


2
ड्रुपल में ऐसा करने के बजाय, मैं बस सभी ट्रैफ़िक को HTTPS को डिफ़ॉल्ट रूप से .htaccessया अपाचे कॉन्फिगरेशन के लिए मजबूर कर दूंगा। समस्या सुलझ गयी।
लीमनक्स

जवाबों:


8

द्रुपाल al

आप hook_html_head_alter()हेड टैग बदलने के लिए लागू कर सकते हैं ; निम्नलिखित अप्रयुक्त है, लेकिन इस चाल को करना चाहिए:

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

मेटाटैग मॉड्यूल के साथ आप [करंट-पेज: url: रिश्तेदार] के बजाय [करंट-पेज: url: Abs] टोकन का उपयोग कर सकते हैं।

इसलिए आपका विहित टैग कुछ इस तरह हो जाएगा: http: //www.mywebsite [वर्तमान-पृष्ठ: url: रिश्तेदार]


0

द्रुपाल al

नोड्स के लिए आपको इसका उपयोग करना होगा hook_ENTITY_TYPE_view_alterक्योंकि यह वह जगह है जहां से उन्हें शुरू में जोड़ा गया था NodeViewController::view()

और मुझे ध्यान दें कि आप संभवतः अपने सभी आने वाले ट्रैफ़िक को एसएसएल में डिफ़ॉल्ट रूप से पुनर्निर्देशित करके बेहतर कर रहे हैं: बस पूरी साइट को एचटीटीपीएस कैसे बनाएं?

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

अगर मैं गलत हूं, तो मुझे पागल कहो और मुझे सुधारो, लेकिन क्या आप एचटीटीपी के साथ यूआरएल को हार्ड-कोड नहीं कर सकते?

मुझे यकीन है कि कुछ ऐसा है जो मुझे याद आ रहा है, लेकिन यदि आप टोकन का उपयोग करने के बजाय पूर्ण URL में छोड़ते हैं, तो आप उस विशेष URL के साथ समाप्त हो जाएंगे, जो Drupal द्वारा बनाए गए पृष्ठ की प्रत्येक भिन्नता के लिए विहित है।

कैविएट यह है कि यह एक अद्यतन दुःस्वप्न बनाता है जैसा कि आपको विहित को बदलने के लिए याद रखना होगा यदि पृष्ठ का उपनाम कभी बदलता है।


कभी-कभी, जब आप डोमेन एक्सेस का उपयोग करते हैं, तो कुछ लेख केवल विशेष डोमेन पर उपलब्ध हैं, और हार्ड-कोडिंग URL मृत लिंक बनाएगा।
मोलॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.