[apache] मैं mod_rewrite में निर्देशिका को अनदेखा कैसे करूं?


4 Answers

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

यह कहता है कि अगर यह एक मौजूदा फ़ाइल है या निर्देशिका इसे छूती नहीं है। आपको site.com/vip तक पहुंचने में सक्षम होना चाहिए और कोई पुनर्लेखन नियम नहीं होना चाहिए।

Question

मैं modrewrite नियम निर्देशिका vip छोड़ने की कोशिश कर रहा हूँ। मैंने कई चीजों की कोशिश की है जैसा कि आप नीचे देख सकते हैं, लेकिन इसका कोई फायदा नहीं हुआ।

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#RewriteRule ^vip$ - [PT]
RewriteRule ^vip/.$ - [PT]
#RewriteCond %{REQUEST_URI} !/vip 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

मैं पूरी तरह से /vip/ निर्देशिका को अनदेखा करने के लिए modrewrite कैसे प्राप्त करूं ताकि सभी अनुरोध सीधे फ़ोल्डर में पास हो जाएं?

अद्यतन करें:

स्पष्टता के बिंदु के रूप में:

  • यह ड्रीमहोस्ट पर होस्ट किया गया है
  • फ़ोल्डर एक WordPress निर्देशिका के भीतर हैं
  • / vip / फ़ोल्डर में एक वेबडैव है। htaccess आदि (हालांकि मुझे नहीं लगता कि यह महत्वपूर्ण है



यह काम ...

RewriteRule ^vip - [L,NC]

लेकिन सुनिश्चित करें कि यह पहला नियम है

पर पुनर्लेखन करें

अर्थात

ErrorDocument 404 /page-not-found.html

RewriteEngine on

RewriteRule ^vip - [L,NC]

AddType application/x-httpd-php .html .htm

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 

etc



मेरे मामले में, ब्रेंटनस्ट्रिन द्वारा जवाब (और मैं देखता हूं कि मैटमुमा भी एक ही विचार था) सही था ... मैं अपने उत्तरों को अप-वोट करना चाहता था, लेकिन यहां नया होने के नाते, मेरे पास कोई "प्रतिष्ठा" नहीं है, इसलिए मेरे पास एक पूर्ण उत्तर लिखने के लिए, जो मुझे लगता है उस पर जोर देने के लिए यहां असली कुंजी है।

इनमें से कई उत्तरों वर्डप्रेस index.php को सफलतापूर्वक उपयोग करने से रोक देंगे ... लेकिन कई मामलों में, ऐसा करने का कारण यह है कि वास्तविक पृष्ठों के साथ एक वास्तविक निर्देशिका है जिसे आप सीधे प्रदर्शित करना चाहते हैं, और

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

रेखाएं पहले से ही इसका ख्याल रखती हैं, इसलिए उनमें से अधिकतर समाधान मेरे जैसे मामले में एक विकृति हैं।

कुंजी ब्रेंटनस्ट्रिन की अंतर्दृष्टि थी कि त्रुटि एक माध्यमिक प्रभाव था, निर्देशिका के अंदर पासवर्ड-सुरक्षा के कारण मैं सीधे प्रदर्शित करने की कोशिश कर रहा था। डालकर

ErrorDocument 401 /err.txt
ErrorDocument 403 /err.txt

लाइनें और त्रुटि पेज बनाना (मैंने वास्तव में err401.html और err403.html बनाया और अधिक जानकारीपूर्ण त्रुटि संदेश बनाए) मैंने 404 प्रतिक्रिया उत्पन्न की जब इसे 401 प्रमाणीकरण आवश्यक के लिए प्रदर्शित करने के लिए कोई पृष्ठ नहीं मिला, और फिर फ़ोल्डर काम किया अपेक्षित के रूप में ... एक अपाचे लॉगिन संवाद दिखा रहा है, फिर फ़ोल्डर की सामग्री, या विफलता पर, मेरी त्रुटि 401 पेज।




अपने कोड के इस भाग को बदलने का प्रयास करें:

RewriteRule ^vip/.$ - [PT]

...निम्नलिखित के साथ:

RewriteCond %{REQUEST_URI} !(vip) [NC]

यह चीजों को ठीक करना चाहिए।




जो कोड आप जोड़ रहे हैं, और रिवाइट नियम / शर्तें प्रदान करने वाले सभी उत्तर बेकार हैं! डिफ़ॉल्ट वर्डप्रेस कोड पहले से ही वह सब कुछ करता है जिसकी आपको आवश्यकता होनी चाहिए:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

उन पंक्तियों का कहना है, "यदि यह एक मौजूदा फ़ाइल ( -f ) या निर्देशिका ( -d ) नहीं है, तो इसे वर्डप्रेस के साथ पास करें। अतिरिक्त नियम जोड़ना, इससे कोई फर्क नहीं पड़ता कि वे कितने विशिष्ट या अच्छे हैं, अनावश्यक है - आपको पहले से ही कवर किया जाना चाहिए वर्डप्रेस नियम!

तो वे क्यों काम नहीं कर रहे हैं ???

vip निर्देशिका में .htaccess एक त्रुटि फेंक रहा है। यदि आप पासवर्ड को निर्देशिका की रक्षा करते हैं तो वही बात होती है।

यहां समाधान है:

ErrorDocument 401 /err.txt
ErrorDocument 403 /err.txt

वर्डप्रेस कोड से पहले उन पंक्तियों को डालें, और फिर /err.txt बनाएं। इस तरह, जब यह आपके WebDAV (या पासवर्ड संरक्षित निर्देशिका) पर आता है और विफल रहता है, तो वह उस फ़ाइल पर जायेगा, और मौजूदा डिफ़ॉल्ट वर्डप्रेस स्थिति ( RewriteCond %{REQUEST_FILENAME} !-f ) द्वारा पकड़ा जाएगा।




Related