पाथ एलियास रीडायरेक्ट लूप बनाता है या फ्रंट पेज पर रीडायरेक्ट करता है


11

जब मैं हमारे बैठने को "www.example.com/contact-us" कहता हूं तो मुझे निम्न त्रुटि मिल रही है:

ओह, ऐसा लगता है कि इस अनुरोध ने एक अनंत लूप बनाने की कोशिश की। हम यहां ऐसी चीजों की अनुमति नहीं देते हैं। हम एक पेशेवर वेबसाइट हैं!

यदि मैं साइट को "www.example.com/node/5" कहता हूं, तो संपर्क पृष्ठ ठीक दिखाई देता है।

जब मैं पथ उपनाम को / व्यवस्थापक / कॉन्फ़िगरेशन / खोज / पथ / संपादन / 6 पर देखता हूं, तो सिस्टम पथ और अन्य सही रूप से सेट हो जाते हैं।

एक अन्य उपनाम के लिए एक और समस्या मौजूद है, जब मैं "www.example.com/staff" कहता हूं तो मैं लैंडिंग पृष्ठ "www.example.com" पर पुनर्निर्देशित हो रहा हूं। एक बार फिर से उपनाम सही ढंग से सेट किया गया है।

हम Drupal 7, और i18n_redirect और redirect मॉड्यूल का उपयोग कर रहे हैं।


मुझे लगता है कि मैंने यह पाया: "www.example.com/admin/config/search/redirect" में उन URL के रीडायरेक्ट करने वाली प्रविष्टियाँ थीं। मुझे नहीं पता कि वे वहां कैसे पहुंचे ...
मथायस

जवाबों:


19

अपना पृष्ठ संपादित करें और URL पुनर्निर्देशित करें । सबसे अधिक संख्या वाली गणना के साथ पुनर्निर्देशित पथ ढूंढें और इसे हटा दें। सहेजें पर क्लिक करें फिर पृष्ठ देखें।

मुझे पता है कि अगर आपकी समस्या तय की


मुझे एक समान समस्या हो रही है और जब यह अलग-अलग नोड्स के लिए चीजों को ठीक करता है तो मैं यह पता लगाने की कोशिश कर रहा हूं कि यह पहली जगह में क्या कारण है इसलिए यह शुरू करने के लिए प्रेरित नहीं करता है।
सोना

8

अद्यतन: Drupal मुद्दा # 1796596 Redirect 1.0-rc2 (जून 2015) के रूप में प्रतिबद्ध था। इस समस्या का सही समाधान अब पुनर्निर्देशित मॉड्यूल के नवीनतम स्थिर रिलीज में अपग्रेड करना है, और फिर डेटाबेस अपडेट चलाना है। आपके पास जो भी परिपत्र रीडायरेक्ट हैं, उन्हें सुरक्षित रूप से साफ किया जाएगा।

पुनर्निर्देशित मॉड्यूल में बग के कारण यह समस्या आई। आप इसे किसी पृष्ठ के URL (या शायद केवल इसके शीर्षक, यदि आप pathauto का उपयोग कर रहे हैं) को बदलकर ट्रिगर करते हैं और फिर इसे वापस उसी में बदल देते हैं जो यह हुआ करता था।

उदाहरण के लिए, मान लें कि मेरे पास "कंपनी" नाम का एक पृष्ठ था और मैंने शीर्षक को "हमारी कंपनी" में बदल दिया (जिसने URL उपनाम को हमारी कंपनी में बदल दिया)। फिर मैंने फैसला किया कि मैं वास्तव में इसे पसंद करता हूं, इसलिए मैंने नोड को फिर से संपादित किया और शीर्षक को "कंपनी" में बदल दिया। उस बिंदु पर त्रुटि संदेश " उफ़, ऐसा लगता है कि इस अनुरोध ने एक अनंत लूप बनाने की कोशिश की। हम यहां ऐसी चीजों की अनुमति नहीं देते हैं। हम एक पेशेवर वेबसाइट हैं! " कंपनी पृष्ठ पर दिखाई देना शुरू हो जाएगा।

इसे ठीक करने के तीन तरीके हैं, जो आपके लिए सबसे आसान है, इस पर निर्भर करता है। वे ऊपर से नीचे तक कठिनाई / बहादुरी में हैं।

Drupal / PHP विधि

विषय पर एक लंबा ड्रुपल बग है: अंक # 1796596 और एक अच्छा काम करने वाला पैच है जो टिप्पणी # 124 में समस्या को ठीक करता है ।

उम्मीद है कि यह फिक्स जल्द ही रीडायरेक्ट मॉड्यूल में डाउनलोड के लिए प्रतिबद्ध हो जाएगा। हालाँकि यह अब एक वर्ष से अधिक हो गया है और उस मोर्चे पर कोई प्रगति नहीं हुई है।

एसक्यूएल विधि

समस्या का सबसे तेज़ समाधान डेटाबेस के लिए SQL क्वेरी के साथ है, जैसा नीचे कुछ है। BE CAREFUL और केवल इस विधि को आजमाएं यदि आप जानते हैं कि आप क्या कर रहे हैं - इसे पहले साइट की एक विकास प्रति पर आज़माएं और सुनिश्चित करें कि आपके पास बैकअप है और यदि आपको वापस रोल करने की आवश्यकता है तो परिवर्तनों का सही परीक्षण करें। अतिरिक्त सावधान रहें और यदि आप i18n का उपयोग कर रहे हैं, तो पहले क्वेरी को अच्छी तरह से जांच लें ... हटाए गए को दिखाने के लिए पहली क्वेरी चलाएँ और दूसरा वास्तव में डिलीट करने के लिए।

--Show records to be deleted:
SELECT r.rid, r.language, r.source, r.redirect
  FROM redirect r INNER JOIN url_alias u ON r.source = u.alias
         AND r.redirect = u.source AND r.language = u.language;

--Delete redirects shown in above query:    
DELETE r FROM redirect r INNER JOIN url_alias u ON r.source = u.alias
         AND r.redirect = u.source AND r.language = u.language;

यदि आपको पता नहीं है कि पैच कैसे लागू करें या SQL क्वेरी को चलाएं, तो आपको समस्या को मैन्युअल रूप से ठीक करने की आवश्यकता है। चिंता न करें, यह वास्तव में करने में काफी आसान है (लेकिन अन्य तरीकों की तुलना में समय लगता है):

मैनुअल विधि:

उन सभी पृष्ठों के लिए जहाँ चेतावनी संदेश प्रदर्शित किया गया है:

  1. पृष्ठ संपादित करें
  2. संपादन फ़ॉर्म के नीचे स्क्रॉल करें
  3. पृष्ठ के मुख्य URL पर ध्यान दें। इसे "URL पथ सेटिंग" के नीचे दिखाया गया है, उदाहरण के लिए "उपनाम: कंपनी" का अर्थ होगा पृष्ठ का URL "कंपनी" है। आप इसके अनुभाग पर जाने के लिए "URL पथ सेटिंग" पर क्लिक कर सकते हैं और यदि आप निश्चित नहीं हैं तो URL उपनाम की पुष्टि करें।
  4. अब "URL रीडायरेक्ट" पर क्लिक करें। वर्तमान पृष्ठ पर रीडायरेक्ट दिखाए जाएंगे। कम से कम एक रीडायरेक्ट होगा जो आपके द्वारा चरण 3 में उल्लेखित URL उपनाम के समान है। यह संभव है कि इस सूची में एक से अधिक रीडायरेक्ट URL उपनाम से मेल खाए।
  5. उन सभी पुनर्निर्देशों को हटा दें जो URL उपनाम के समान हैं। ये समस्या डेटा हैं जो लूप और त्रुटि संदेश को प्रदर्शित करने का कारण बन रहे हैं।
  6. एक बार "URL रीडायरेक्ट" के तहत अधिक रीडायरेक्ट नहीं होते हैं जो URL पथ सेटिंग्स के तहत समस्या पृष्ठ के URL उपनाम से बिल्कुल मेल खाते हैं, त्रुटि संदेश चला जाएगा।

अच्छा काम एसक्यूएल विधि! thx
rémy

रिडायरेक्ट करने के लिए पैच रिलीज के लिए लगभग तैयार है। बस सोचा था कि मैं इसका उल्लेख करूंगा।
अल्फ्रेड आर्मस्ट्रांग

1

यदि हमारे पास नोड के उपनाम के समान रीडायरेक्ट हैं, तो इस त्रुटि को ठीक करने का एक और तरीका एक स्क्रिप्ट चलाना है जो सभी nid (नोड्स के मामले में) के माध्यम से है और देखें कि क्या प्रत्येक नोड के उपनाम में एक ही नाम के साथ पुनर्निर्देशन है, यदि कोई हो समाप्त हो गया है।

for ($i=1; $i<=10000; $i++) {
  $alias = drupal_get_path_alias("node/" . $i);
  $redirect = redirect_load_by_source($alias);
  if ($redireccion->rid> 0) {
    redirect_page_cache_clear($redirect);
    redirect_delete($redireccion->rid);
  }
}

आप इस कोड को विकास मेनू से "एक्ज़क्यूट PHP कोड" विकल्प में चला सकते हैं।

यह फ़ॉर्म "द SQL मेथड" के समान है, बस मैं इसे ड्रुपल से निष्पादित करता हूं, डेटाबेस पर नहीं।


यह पूरी तरह से काम किया!
अलबर्ट्स्की


0

Drush स्क्रिप्ट बनाएं:

<?php
// Set up the query using the database API
$query = db_select('redirect', 'r');
$query->join('url_alias', 'ua', 'r.redirect = ua.source AND r.source = ua.alias');
$query->fields('r', array('rid', 'redirect', 'source'));

// Execute it and fetch the results, one by one
$result = $query->execute();
$any_results = FALSE;
while($r = $result->fetchAssoc()) {
  // For each result, flag we've got at least one result, notify the CLI user
  // of what we're doing, and delete it using Redirect's own API
  $any_results = TRUE;
  drush_log(dt("Deleting unwanted redirect !r (!s -> !t)",
    array("!r" => $r['rid'], "!s" => $r['source'], "!t" => $r['redirect'])), "success");
  redirect_delete($r['rid']);
}

// No results? Report if that's the case
if (!$any_results) {
  drush_log(dt("Nothing to delete!"), "ok");
}

इसे किसी फ़ाइल में सहेजें और इसे अपनी साइट के कोडबेस के अंदर से चलाएं drush php-script [PATH_TO_SCRIPT], और यह URL रीडायर्स के साथ टकराव करने वाले किसी भी रीडायरेक्ट को हटा देगा।


0

मैं भविष्य में उत्पादन सर्वर में "रीडायरेक्ट लूप" त्रुटि संदेश को प्रदर्शित करने से कैसे रोक सकता हूं? मैंने इस पृष्ठ में पहले से ही "रिपोर्टिंग" में कोई भी त्रुटि नहीं दी है - व्यवस्थापक / कॉन्फ़िगरेशन / विकास / लॉगिंग


-2

कई पैच करने की कोशिश करने के बाद एकमात्र तरीका पुनर्निर्देशित फ़ाइल को खोलने और # 989 लाइन को छोड़ना था

drupal_set_message('Oops, looks like this request tried to create an infinite loop. We do not allow such things here. We are a professional website!');

1
तो अनंत लूप को ठीक करने के बजाय आपने चेतावनी को छोड़ दिया?
जॉर्ज

1
हालाँकि मैंने इस तरह की बात की थी जब मैं एक बच्चा था (इससे पहले कि मुझे पता था कि कोड कैसे करना है), मैं किसी भी पेशेवर क्षमता में ऐसा करने की सलाह नहीं देता। न केवल आप समस्या को हल नहीं कर रहे हैं, आप एकमात्र संकेतक छिपा रहे हैं कि कुछ गलत है!
कोलन

-2

मेरी अंग्रेजी बहुत अच्छी नहीं है, लेकिन मुझे लगता है कि आपको मुझे पढ़ने में कोई समस्या नहीं है। मेरे पास उस समस्या से पहले है और मैंने इसे हल किया है इसलिए मैंने मॉड्यूल REDIRECT को हटा दिया है। सादर KoZnaZna साइट टीम - साइमन


1
रीडायरेक्ट मॉड्यूल को हटाने से आपको मदद नहीं मिलेगी यदि आपको इसकी विशेषताओं की आवश्यकता है।
कोलन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.