WordPress .htaccess के नियमों में अपवाद भी हैं
वर्डप्रेस ने ब्लॉगिंग प्लेटफ़ॉर्म में एक प्रमुख विकासवादी कदम आगे बढ़ाया, इसे पुनरीक्षण ट्रैकिंग, कस्टम मेनू के लिए अधिक समर्थन और डोमेन मैपिंग के साथ मेरे लिए बहु-साइट समर्थन के साथ-साथ एक पूर्ण-विकसित सामग्री प्रबंधन प्रणाली के करीब ले जाया गया।
यदि आप सामग्री प्रबंधन प्रणाली के दीवाने नहीं हैं, तो कोई बात नहीं। आप इस लेख को ठीक पहले छोड़ सकते हैं। लेकिन मेरे साथी टेक्नो-गीक्स, कोड-हेड्स और अपाचे-डब्बलर्स के लिए, मैं कुछ दिलचस्प और कुछ अच्छा साझा करना चाहता हूं।
मल्टी-साइट एक ऐसी सुविधा है जो आपको एक ही वर्डप्रेस इंस्टॉलेशन के साथ कितनी भी वर्डप्रेस वेबसाइट चलाने की अनुमति देती है। यदि आप एक से अधिक साइटों को प्रशासित करते हैं, तो यह अच्छा है क्योंकि आप थीम और विजेट्स का एक स्वीकृत समूह स्थापित कर सकते हैं, और उन्हें अपनी ग्राहक साइटों के लिए सक्रिय कर सकते हैं। आपके डोमेन की मैपिंग में कुछ तकनीकी बाधाएँ हैं, लेकिन यह प्रक्रिया कठिन नहीं है।
मेरे द्वारा पहचाने गए समस्या क्षेत्रों में से एक विषय अनुकूलन है। चूंकि थीम कई वेबसाइटों के लिए उपलब्ध कराई जा सकती हैं, इसलिए आप किसी थीम पर जो भी अनुकूलन करते हैं, वह आपकी बहु-साइट स्थापना पर उस थीम का उपयोग करने वाली अन्य साइटों को भी प्रभावित करेगा। इसके आस-पास मेरा तरीका यह है कि मैं कस्टमाइज़ करना शुरू करने से पहले एक थीम को डुप्लिकेट करूँ, और उस क्लाइंट साइट के लिए थीम को स्पष्ट रूप से नाम दूँ जिसके लिए मैं इसे स्टाइल कर रहा हूँ।
एक और दिलचस्प मुद्दा यह है कि में क्या होता है .htaccess का अपने अपाचे सर्वर पर फ़ाइल करें। वर्डप्रेस को ब्लॉग-दर-ब्लॉग के आधार पर पथों को फिर से लिखने की आवश्यकता है और यह एक पुनर्लेखन नियम और ए के साथ करता है पीएचपी फ़ाइल.
वर्डप्रेस निम्नलिखित पुनर्लेखन नियम का उपयोग करता है:
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
टूटा हुआ, इसका मतलब है:
RewriteRule
- यह निर्देश अपाचे को बताता है कि यह एक पुनर्लेखन नियम है।^([_0-9a-zA-Z-]+/)?
- यह एक नियमित अभिव्यक्ति है (रेगुलर एक्सप्रेशन से) जो वर्णों की एक स्ट्रिंग से मेल खाता है जो अल्फ़ान्यूमेरिक वर्णों और हाइफ़न के एक वैकल्पिक स्ट्रिंग के साथ शुरू होता है, जिसके बाद एक स्लैश होता है। कोष्ठक एक कैप्चर समूह को इंगित करते हैं, जिसका अर्थ है कि मिलान किए गए पाठ का उपयोग प्रतिस्थापन स्ट्रिंग में किया जा सकता है।files/
- यह "फ़ाइलें /" स्ट्रिंग से मेल खाता है।(.+)
- यह एक और कैप्चर समूह है जो वर्णों के किसी भी स्ट्रिंग से मेल खाता है, एक या अधिक बार।wp-includes/ms-files.php?file=$2
- यह प्रतिस्थापन स्ट्रिंग है जो मिलान की गई स्ट्रिंग को बदल देती है। यह अपाचे को "wp-includes/ms-files.php" के अनुरोध को पुनर्निर्देशित करने के लिए कहता है, दूसरे कैप्चर समूह ($ 2) के मान के साथ "फ़ाइल" नामक क्वेरी पैरामीटर के रूप में।[L]
- यह एक ध्वज है जो अपाचे को बताता है कि यदि यह नियम मेल खाता है तो आगे किसी भी नियम को संसाधित करना बंद कर दें।
अनिवार्य रूप से, कुछ भी जो mysite.com/files/directory के उपनिर्देशिका में है, mysite.com/files/wp-includes/myblogfolderpath… पर फिर से लिखा जाता है और यह वह जगह है जहाँ यह दिलचस्प हो जाता है। यदि आपको वास्तव में अपने सर्वर पर एक फाइल रखने की आवश्यकता है जो कि mysite.com/files/myfolder/myimage.jpg है? आपको 404 त्रुटि मिलती है, यही होता है। अपाचे नियम को फिर से लिखता है और मार्ग बदलता है।
दी, तुम इस समस्या के पार कभी नहीं आ सकते, लेकिन मैंने किया। मेरे पास एक वेबसाइट थी जो किसी अन्य वेबसाइट से जावास्क्रिप्ट विजेट का उपयोग करने की आवश्यकता थी, और इसे mysite.com/files/Images/myfile पर ग्राफिक्स खोजने की आवश्यकता थी। चूंकि होस्ट साइट पर फ़ाइल को बदलने का कोई तरीका नहीं था, इसलिए मुझे अपने सर्वर पर ऐसा करने के लिए एक तरीका निकालने की आवश्यकता थी। आसान समाधान यह है कि एक पुनर्लेखन की स्थिति बनाई जाए जो विशिष्ट फ़ाइलों के लिए एक अपवाद बनाता है।
यहाँ समाधान है:
RewriteCond %{REQUEST_URI} !/?files/Image/file1.jpg$
RewriteCond %{REQUEST_URI} !/?files/Image/file2.jpg$
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
टूटा:
रेखा 1:
RewriteCond
- यह निर्देश अपाचे को बताता है कि यह एक रिवाइटकंड नियम है।%{REQUEST_URI}
- यह एक सर्वर वैरिएबल है जिसमें अनुरोधित यूआरआई का पथ शामिल है।!
- यह एक नकारात्मक ऑपरेटर है जिसका अर्थ है "नहीं"। इसका उपयोग स्थिति को उलटने के लिए किया जाता है।/?files/Image/file1.jpg$
- यह एक नियमित अभिव्यक्ति है जो अनुरोधित यूआरआई के अंत में सटीक स्ट्रिंग "/files/Image/file1.jpg" से मेल खाती है। "फ़ाइलें" से पहले प्रश्न चिह्न और फ़ॉरवर्ड स्लैश प्रमुख स्लैश को वैकल्पिक बनाते हैं।
रेखा 2:
RewriteCond
- यह निर्देश अपाचे को बताता है कि यह एक रिवाइटकंड नियम है।%{REQUEST_URI}
- यह एक सर्वर वैरिएबल है जिसमें अनुरोधित यूआरआई का पथ शामिल है।!
- यह एक नकारात्मक ऑपरेटर है जिसका अर्थ है "नहीं"। इसका उपयोग स्थिति को उलटने के लिए किया जाता है।/?files/Image/file2.jpg$
- यह एक नियमित अभिव्यक्ति है जो अनुरोधित यूआरआई के अंत में सटीक स्ट्रिंग "/files/Image/file2.jpg" से मेल खाती है। "फ़ाइलें" से पहले प्रश्न चिह्न और फ़ॉरवर्ड स्लैश प्रमुख स्लैश को वैकल्पिक बनाते हैं।
रेखा 3:
RewriteRule
- यह निर्देश अपाचे को बताता है कि यह एक पुनर्लेखन नियम है।^([_0-9a-zA-Z-]+/)?
- यह एक नियमित अभिव्यक्ति है जो वर्णों की एक स्ट्रिंग से मेल खाती है जो अल्फ़ान्यूमेरिक वर्णों और एक स्लैश के बाद हाइफ़न के वैकल्पिक स्ट्रिंग से शुरू होती है। कोष्ठक एक कैप्चर समूह को इंगित करते हैं, जिसका अर्थ है कि मिलान किए गए पाठ का उपयोग प्रतिस्थापन स्ट्रिंग में किया जा सकता है।files/
- यह "फ़ाइलें /" स्ट्रिंग से मेल खाता है।(.+)
- यह एक और कैप्चर समूह है जो वर्णों के किसी भी स्ट्रिंग से मेल खाता है, एक या अधिक बार।wp-includes/ms-files.php?file=$2
- यह प्रतिस्थापन स्ट्रिंग है जो मिलान की गई स्ट्रिंग को बदल देती है। यह अपाचे को "wp-includes/ms-files.php" के अनुरोध को पुनर्निर्देशित करने के लिए कहता है, दूसरे कैप्चर समूह ($ 2) के मान के साथ "फ़ाइल" नामक क्वेरी पैरामीटर के रूप में।[L]
- यह एक ध्वज है जो अपाचे को बताता है कि यदि यह नियम मेल खाता है तो आगे किसी भी नियम को संसाधित करना बंद कर दें।
पुनर्लेखन की शर्तों को फिर से लिखने से पहले रखा जाना चाहिए, या यह चाल काम नहीं करेगी। अपने स्वयं के प्रयोजनों के लिए इस स्थिति को संशोधित करना आसान होना चाहिए, क्या आपको एक समान समस्या का सामना करना चाहिए। समाधान ने मेरे लिए बहुत अच्छा काम किया, मुझे कम वांछनीय ऑल्ट टेक्स्ट के बजाय कस्टम ग्राफिक्स स्थानापन्न करने की अनुमति दी, जो मेरे डिजाइन के अनुरूप नहीं था। उम्मीद है, यह आपके लिए भी काम करेगा।