अपाचे प्रमाणीकरण: एक उपनिर्देशिका के लिए सार्वजनिक उपयोग की अनुमति दें


13

यह शायद एक साधारण समस्या है, लेकिन मैं दस्तावेज़ीकरण में समाधान नहीं ढूंढ सकता।

मैं मूलभूत प्रमाणीकरण का उपयोग करके अपनी वेबसाइट की सुरक्षा करना चाहता हूं। लेकिन मैं चाहता हूं कि एक उपनिर्देशिका गैर-संरक्षित हो:

http://mysite.com/ -> BASIC protected
http://mysite.com/somedir -> BASIC protected
http://mysite.com/someotherdir -> BASIC protected
http://mysite.com/public -> not protected

मुझे सभी साइट को सुरक्षित रखने में कोई समस्या नहीं है, लेकिन मुझे नहीं पता कि मैं एक निर्देशिका को "असुरक्षित" कैसे कर सकता हूं। साइट को एक साझा होस्ट पर होस्ट किया गया है, इसलिए मेरे पास कॉन्फ़िगरेशन करने के लिए केवल .htaccess फ़ाइलों तक पहुंच है।

क्या प्रमाणीकरण को नकारने का निर्देश है?

सहायता के लिए धन्यवाद ...


यह सबसे सही समाधान प्रतीत होता है: stackoverflow.com/questions/2641646/…
ब्रायनक

जवाबों:


10

.Htaccess के साथ कोई समस्या नहीं होनी चाहिए, यह इस बात पर निर्भर करता है कि मेजबान ने क्या अनुमति दी है।

आप निम्नलिखित के साथ उप-फ़ोल्डर में एक .htaccess डालने की कोशिश कर सकते हैं, हालांकि ओवरराइड्स को उन निर्देशिकाओं के लिए सक्षम करना होगा जो इसमें हैं।

 Allow From All
 Satisfy Any

1
यहाँ पर गुप्त सॉस, IIRC, .htaccess को अपनी साइट के मूल में रखना है, लेकिन उस .htaccess फ़ाइल में एक प्रविष्टि है जैसे कि एक Cylindric वार्ता।
पॉल लैथ्रॉप

और जोड़ना मत भूलना (या सुनिश्चित करें कि वहां मौजूद है) एक AllowOverride ताकि .htaccess का उपयोग किया जाएगा।
TCampbell

1
@Paul - मैंने अपना उत्तर हटा दिया है, लेकिन AFAICR सिलिंड्रिक का उत्तर वर्तमान में गलत है? एक उपनिर्देशिका में .htaccess फ़ाइल एक उच्च को ओवरराइड नहीं कर सकती है। हालाँकि, मूल निर्देशिका में .htaccess फ़ाइल में उपनिर्देशिकाओं के लिए नियंत्रण (या वास्तव में उन्हें हटा सकते हैं) शामिल हो सकते हैं।
अलनीतक

मैंने रूट फ़ोल्डर और फ़ोल्डर में एक <निर्देशिका /> निर्देश डालने की कोशिश की, जो मैं सार्वजनिक होना चाहता हूं, लेकिन दोनों ही मामलों में मुझे HTTP 500 मिलता है। कोई अन्य विचार?
गिलियूम

1
आप उपयोग नहीं कर सकते <निर्देशिका> .htaccess में, हालांकि आप <फ़ाइलें> और <स्थान> उपयोग कर सकते हैं
एल्निटैक

7

एक पथ सर्वर के लिए ठीक है।

server.com/private/.htaccess

AuthType Basic
AuthName "Private, keep out."
Require...

server.com/private/public/.htaccess

Allow From All
Satisfy Any

यहाँ कुंजी 'संतुष्टी कोई' है जो एक साथ अपस्ट्रीम से आवश्यकताओं को पूरा करती है। Is सैटिसिफ़ ऑल ’डिफ़ॉल्ट है।


Isf सैटिसफी एनी ’21 समझाने के लिए Thx
मारियो

1

मेरा मानना ​​है कि यह कर सकता है:

# put the global auth stuff here
...

# put the override here
<Location /public>
Allow from All
Satisfy Any
</Location>

पहुँच नियंत्रण के लिए <स्थान> s का उपयोग करना कभी भी अच्छा नहीं है। यह केवल संसाधन के बजाय एक नाम के माध्यम से पहुंच को नियंत्रित करता है। इस प्रकार, एक अलग नाम (उदाहरण के लिए उपनाम) के माध्यम से उस तक पहुंच प्रदान करने वाली किसी भी चीज का उस पर कोई अभिगम नियंत्रण नहीं है।
सी.के.

1
@CK वास्तव में आपको स्थान का उपयोग करना चाहिए, यदि प्रश्न में स्थान भौतिक निर्देशिका नहीं है, लेकिन mod_rewrite जैसी किसी चीज से भेस में केवल "आभासी" निर्देशिका है।
नेटली एडम्स

0

मैंने ऐसा करने में इसे हल करने में कामयाबी हासिल की:

<Directory "/path/to/maindirectory">
[... auth stuff ... ]
</Directory>

<Directory "/path/to/mysubdirectory">
 Allow from All
 Satisfy Any
</Directory>

स्थान का उपयोग न करें, क्योंकि वे मामले के प्रति संवेदनशील हैं और वे वास्तविक फ़ोल्डर एक्सेस पर कार्य नहीं करते हैं, लेकिन केवल URL पर।

उदाहरण के लिए, अगर मैं लिखता हूं

http:/mywebsite/STUFF

या

http://mywebsite/stuff

या

http://mywebsite/StUfF

यह स्थान नियंत्रण के लिए अलग है, भले ही भौतिक निर्देशिका कहा जाता है एक ही है !!!

संक्षेप में, आप निर्देशिका "सामान" के लिए पहुंच की जांच करते हैं और मैं इसे अलग-अलग मामले में लिख सकता हूं।

इसके अलावा, दूसरों पर स्थान नियंत्रण के साथ एकल निर्देशिका में .htaccess फ़ाइल का उपयोग करने से मुझे काम नहीं मिला।

आशा करता हूँ की ये काम करेगा।

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