मैं एक वर्डप्रेस साइट पर काम कर रहा हूं, और मेरे पृष्ठ एक परमालिंक संरचना का उपयोग कर रहे हैं जो उन्हें निर्देशिकाओं की तरह दिखने के लिए mod_rewrites करता है। कुछ पृष्ठों के लिए मैं कुछ पृष्ठों की सुरक्षा के लिए मूल प्रमाणीकरण का उपयोग करना चाहता हूं। मैं इसे अपने .htaccess फ़ाइल में कैसे लिखूं? क्या मैं फ़ाइल की रक्षा कर रहा हूं, या फिर लिखित पता?.htaccess, mod_rewrite, और मूल प्रमाणीकरण
उत्तर
आप इस के लिए mod_rewrite की जरूरत नहीं होगी, उम्मीद है कि, इस चाल करना चाहिए:
SetEnvIfNoCase Request_URI ^/some/path/to/protect require_auth=true
SetEnvIfNoCase Request_URI ^/another/protected/path require_auth=true
# Auth stuff
AuthUserFile /var/www/htpasswd
AuthName "Password Protected"
AuthType Basic
# Setup a deny/allow
Order Deny,Allow
# Deny from everyone
Deny from all
# except if either of these are satisfied
Satisfy any
# 1. a valid authenticated user
Require valid-user
# or 2. the "require_auth" var is NOT set
Allow from env=!require_auth
mod_auth और mod_env मॉड्यूल , mod_rewrite से अधिक precidence होना चाहिए तो अपने नकली निर्देशिका संरचना एक ही रहना चाहिए । आपको बस प्रत्येक के लिए SetEnvIfNoCase Request_URI ^/some/path/to/protect require_auth=true
भरना होगा, फिर अपनी आवश्यकताओं के अनुरूप शेष लेखों को भरें।
ठीक है, मैं पूरी तरह समझ नहीं पा रहा हूं कि ऐसा क्यों किया, लेकिन ... उसने ऐसा किया! आपको बहुत - बहुत धन्यवाद! मैं दिन के आधा के लिए यह पसीना था! – Imaginary
@ आकस्मिक रूप से, यदि 'require_auth' पर्यावरण परिवर्तक * नहीं * सेट है, तो प्रमाणीकरण की कोई आवश्यकता नहीं है। शीर्ष सेट पर 'SetEnvIfNoCase' निर्देश जो वैरिएबल हैं यदि अनुरोध कुछ निर्देशिकाओं के लिए है (चाहे वे मौजूद हैं या नहीं)। –
मुझे लगता है कि मुझे मिल गया है! बहुत साफ़। एक बार फिर धन्यवाद! – Imaginary
इस समाधान के साथ मेरी एकमात्र समस्या यह है कि रद्द बटन पर क्लिक करने से संरक्षित पृष्ठ दिखाई देगा। मैंने इसका उपयोग करके इसे हल करने का प्रयास किया:
RewriteCond %{REMOTE_USER} !user
RewriteRule ^/protected-page /unauthenticated-page [R=401]
लेकिन यह काम नहीं किया। मुझे यकीन नहीं है क्यों।
समस्या को हल करने के लिए त्वरित और गंदे मैं इस तरह
ErrorDocument 401 "You don't have access."
जोड़ा एक रीडायरेक्ट मैं इस
ErrorDocument 401 '<html><head><meta http-equiv="refresh" content="0; url=/unauthenticated-page" /></head><body></body></html>'
जो मुझे के रूप में एक ही समस्या के साथ यहाँ आया के लिए प्रयोग किया जाता है बनाने के लिए, .htaccess के साथ
AuthType Basic
AuthName "some_name"
AuthUserFile "/path/to/password/passwd"
require valid-user
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
नियमों से ऊपर काम कर रहे हैं नहीं के रूप में मैं उम्मीद (अधिकृत करते हैं, तो फिर से लिखने)
निर्देश विलय आदेश ("अगर" पिछले विलय कर दिया है)
comment from Alek करने के लिए धन्यवाद करते रहे कि
तोकी वजह से
जब मैं IfModule कोष्ठक हटा दिया, नियमों के लिए काम करने के लिए शुरू कर दिया है मुझे।
सफल होने के करीब आने वाली एकमात्र चीज है, मैंने एक यूआरएल को दोस्ताना यूआरएल (यानी/दोस्ताना /) के रूप में नामित किया है और प्रमाणीकरण का अनुरोध करते हुए एक .htaccess फ़ाइल डाली है। पृष्ठ पर जाकर, मुझे प्रमाण-पत्रों के लिए कहा गया था और फिर 403 निषिद्ध त्रुटि पर भेजा गया था। – Imaginary