http एरर अजीब 401 त्रुटि कुछ यूआरएल के लिए प्रकट होता है जब




वर्णन http 404 (2)

इसके बजाय इसका उपयोग करने का प्रयास करें नहीं एल और आर फ्लैग

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

पुराने गलत रीडायरेक्ट को हटाने के लिए, पहले अपने ब्राउज़र कैश को भी साफ़ करें।

अगर यह काम नहीं करता है तो इसका उपयोग करने का प्रयास करें

RewriteCond %{HTTPS} !on
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ ([^\ ]+)
RewriteRule ^ https://%{HTTP_HOST}%2 [L,R=301]

मुझे यह लिखने के बारे में थोड़ा बुरा लगता है, क्योंकि मेरे विचार में ऐसा लगता है

संपादित करें दूसरा विकल्प समस्या तय करता है तो यहां बताया गया है कि यह काम क्यों करता है।

प्रमाणीकरण मॉड्यूल को फिर से लिखना मॉड्यूल से पहले निष्पादित किया जाता है। चूंकि पृष्ठ का अनुरोध करने पर पहले उपयोगकर्ता नाम और पासवर्ड नहीं भेजा जाता है, इसलिए प्रमाणन मॉड्यूल आंतरिक अनुरोध URL को 401 पेज के यूआरएल में 'पुनः लिखता है'। इस mod_rewrite के बाद आता है और% {THE_REQUEST} में अब मूल url के बजाय 401.shtml । इसलिए परिणामी रीडायरेक्ट में 401.shtml शामिल है, और नहीं जो यूआरएल आप चाहते हैं।

मूल ('' फिर से लिखा हुआ '' url नहीं) प्राप्त करने के लिए, आपको इसे% {THE_REQUEST} से निकालने की आवश्यकता है। THE_REQUEST फार्म [requestmethod] [url] HTTP[versionnumber] । रीवाइटकॉन्ड केवल मध्य भाग ( [url] ) को निकालता है।

पूर्णता के लिए मैंने दूसरे समाधान में [L,R=301] झंडे जोड़े।

ठीक है, यहां असफल प्रयासों का 7 वां दिन है, इसका उत्तर खोजने का प्रयास 401 त्रुटि क्यों दिखाई देता है ...

अब, रूट फ़ोल्डर में .htaccess में केवल 3 स्ट्रिंग्स (सरलीकृत होती हैं) हैं और इस परियोजना में कोई और। Htaccess फ़ाइलें हैं:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

इसलिए, यह सभी अनुरोधों को https होने के लिए रीडायरेक्ट करता है यह किसी भी यूआरएल के लिए ठीक काम करता है, यहां तक ​​कि / प्रशासन निर्देशिका के लिए भी।

इसलिए,

http://mydomain.com

हो जाता है

https://mydomain.com

यदि https://mydomain.com दर्ज किया गया था, तो कोई पुनर्निर्देशन नहीं है

http://mydomain.com/administration/index.php

हो जाता है

https://mydomain.com/administration/index.php

यदि https://mydomain.com/administration/index.php दर्ज किया गया था, तो कोई पुनर्निर्देशन नहीं है

यह स्पष्ट है, और समस्या नीचे है

मैं चाहता हूं / प्रशासन निर्देशिका को पासवर्ड से संरक्षित किया जाए मेरा साझा होस्टिंग नियंत्रण कक्ष .htaccess और .htpasswd का मैन्युअल निर्माण बिना निर्देशिका की रक्षा करने के लिए अनुमति देता है (आप को बचाने के लिए एक निर्देशिका चुनें, उपयोगकर्ता नाम और पासवर्ड बनायें, और .htaccess और .htpasswd स्वचालित रूप से बनाए जाते हैं)। इसलिए, .htaccess / प्रशासन फोल्डर में दिखाई देता है। । htpasswd कहीं और दिखाई देता है, .htpasswd का पथ सही है, और सब कुछ ठीक दिखता है (यह मैन्युअल रूप से इसे बनाने के लिए भी काम करता है) इसलिए, परियोजना में 2 .htaccess फ़ाइलें हैं, रूट निर्देशिका में एक और / प्रशासन निर्देशिका में (.htaccess निर्देशिका में .htaccess के साथ जानता है कि यह कहां है)।

पासवर्ड बनने के बाद, परिणाम निम्न हैं:

तुम प्रवेश करो:

https://mydomain.com/administration/index.php

फिर यह एक पासवर्ड दर्ज करने के लिए पूछता है। यदि आप इसे ठीक से दर्ज करते हैं, तो https://mydomain.com/administration/index.php प्रदर्शित किया जाता है। परिणाम: सही काम करता है

लेकिन, यदि आप http://mydomain.com/administration/index.php (हाँ, http, बिना एस) दर्ज करते हैं, तो उसी पर पुनः निर्देशित करने के बजाय, लेकिन https पृष्ठ, यह रीडायरेक्ट करता है

https://mydomain.com/401.shtml (starts with httpS)

अज्ञात कारण से और यहां तक ​​कि एक पासवर्ड नहीं पूछता है। क्यूं कर?

मैंने इस प्रश्न के बारे में एक ग्राहक सहायता से संपर्क किया है और वे सुनिश्चित हैं कि समस्या .htaccess फ़ाइल में है, और वे .htaccess फ़ाइलों को ठीक नहीं करते हैं (यह स्पष्ट है, वे नहीं करते हैं, मुझे कोई दिक्कत नहीं है)।

ऐसा क्यों होता है? क्या मैं कुछ झंडे, या कुछ विकल्पों को .htaccess फ़ाइल में डिफ़ॉल्ट सेटिंग्स बदलने के लिए भूल गए?

PSCreating .htaccess और .htpasswd मैन्युअल रूप से (नियंत्रण कक्ष की मेजबानी से नहीं) फ़ोल्डर / प्रशासन के लिए एक ही 401 त्रुटि का कारण बनता है अगर नहीं https, लेकिन http दर्ज किया गया था

और समस्या URL / प्रशासनिक निर्देशिका में ही दिखाई देती है।

धन्यवाद।


मुझे लगता है कि मुझे इसके लिए एक बेहतर समाधान मिल गया!

बस इसे अपने .htaccess में जोड़ें

ErrorDocument 401 "Unauthorized"

समाधान पाया:

http://forum.kohanaframework.org/discussion/8934/solved-for-reall-this-time-p-htaccess-folder-password-protection/

- संपादित करें

मुझे अंततः इस मुद्दे का मूल कारण मॉस सिक्युरिफ़िकेशन मेरे पोस्ट डेटा (स्क्रिप्ट और आइफ्रेम टैग कारणों के मुद्दों) को फ़्लैग करने में मिला। यह एक 401/403 वापस करने का प्रयास करेगा लेकिन डिफ़ॉल्ट त्रुटि दस्तावेज़ नहीं मिला क्योंकि मॉडेसियरेक्टी ने मेरे एचटीएक्सास को गड़बड़ कर दिया था

ErrorDocument 401 का प्रयोग "अनधिकृत" लापता त्रुटि दस्तावेज़ समस्या को नजरअंदाज कर दिया लेकिन रूट कारण को संबोधित करने के लिए कुछ नहीं किया

इसके लिए मैं 'नमक' को किसी भी चीज को जोड़ने के लिए जावास्क्रिप्ट का उपयोग कर रहा हूं जो न ही सफेद स्थान था और न ही एक शब्द चरित्र था ...

  $("form").submit(function(event) {
    $("textarea,[type=text]").each(function() {
      $(this).val($(this).val().replace(/([^\s\w])/g, "foobar$1salt"));
    });
  });

तो फिर नमक को फिर से पट्टी करने के लिए PHP ...

function stripSalt($value) {
  if (is_array($value)) $value = array_map('stripSalt', $value);
  else $value = preg_replace("/(?:foobar)+(.)(?:salt)+/", "$1", $value);

  return $value;
}
$_POST = stripSalt($_POST);

बहुत, बहुत, बहुत महत्वपूर्ण नोट:
"फोबोर $ 1 साल्ट" का प्रयोग न करें अन्यथा इस पोस्ट ने सिर्फ हैकर्स को दिखाया है कि कैसे अपने मॉडेसियैक्टी को बायपास करने के लिए!

रेगेक्स नोट्स:
मैंने सोचा था कि ये क्या हो रहा है इसका उल्लेख करना लायक हो सकता है ...

(?: foobar) + = नमक के पहले छमाही में एक या अधिक बार मैच करते हैं लेकिन इसे किसी मिलान वाले समूह के रूप में संग्रहीत नहीं करते हैं;

(।) = किसी भी चरित्र से मेल खाता है और इसे पहले और एकमात्र समूह के रूप में संग्रहीत करें ($ 1 के द्वारा सुलभ);

(?: नमक) + = नमक के दूसरे छमाही से एक या अधिक बार मैच करते हैं लेकिन इसे किसी मिलान वाले समूह के रूप में संग्रहीत नहीं करते हैं

नमक को प्रति चरित्र कई बार मैच करना महत्वपूर्ण है, क्योंकि अगर आपने इसे सबमिट किया है और फिर आप वापस बटन का उपयोग करते हैं तो आप फिर से सभी नमक के साथ फार्म पर वापस जायेंगे। हिट सबमिट करें और अधिक नमक जोड़ा जाता है। ऐसा कभी-कभी तब तक हो सकता है जब तक आप किसी चीज के साथ समाप्त न करें: foobarfoobarfoobarfoobar> saltsaltsaltsalt





http-status-code-401