WordPress .htaccess नियमहरूमा पनि अपवादहरू छन्
WordPress ले ब्ल्गिंग प्लेटफर्ममा एक प्रमुख विकासवादी कदम अगाडि बढायो, यसलाई परिमार्जन ट्र्याकिंग, कस्टम मेनूहरूको लागि थप समर्थन, र ma मेरो लागि सब भन्दा पेचिलाग्दो सुविधा - डोमेन म्यापि withको साथ बहु-साइट समर्थनको साथ पूर्ण-सामग्री सामग्री प्रणालीको नजिक बढाइयो।
यदि तपाईं सामग्री व्यवस्थापन प्रणाली जन्की हुनुहुन्न भने, यो ठीक छ। तपाईं यस लेखको दायाँ विगत छोड्न सक्नुहुन्छ। तर मेरा साथी टेक्नो-गीकहरू, कोड-हेडहरू, र अपाचे-डब्लरहरूका लागि, म केहि रोचक र केहि राम्रो साझा गर्न चाहन्छु।
बहु-साइट एक सुविधा हो जसले तपाईंलाई एकल WordPress स्थापनाको साथ कुनै पनि WordPress वेबसाइटहरू चलाउन अनुमति दिन्छ। यदि तपाइँ धेरै साइटहरू प्रबन्ध गर्नुहुन्छ भने, यो राम्रो छ किनभने तपाइँ विषयवस्तुहरू र विजेटहरूको अनुमोदित समूह स्थापना गर्न सक्नुहुन्छ, र तिनीहरूलाई तपाइँको ग्राहक साइटहरूको लागि सक्रिय गर्न सक्नुहुन्छ। तपाईंको डोमेन म्यापिङ गर्न केही प्राविधिक बाधाहरू छन्, तर प्रक्रिया गाह्रो छैन।
मैले पहिचान गरेको समस्या क्षेत्र मध्ये एक विषय अनुकूलन हो। विषयवस्तुहरू धेरै वेबसाइटहरूमा उपलब्ध गराउन सकिने हुनाले, तपाईंले विषयवस्तुमा गर्ने कुनै पनि अनुकूलनले तपाईंको बहु-साइट स्थापनामा उक्त विषयवस्तु प्रयोग गर्ने अन्य साइटहरूलाई पनि असर गर्नेछ। यसको वरिपरि मेरो तरिका भनेको मैले अनुकूलन सुरु गर्नु अघि विषयवस्तुको नक्कल गर्नु हो, र क्लाइन्ट साइटको लागि मैले यसलाई स्टाइल गर्दैछु भन्ने विषयलाई स्पष्ट रूपमा नाम दिनु हो।
अर्को चाखलाग्दो मुद्दा के हुन्छ के हुन्छ .htaccess तपाईंको Apache सर्भरमा फाइल। वर्डप्रेसले ब्लग-द्वारा-ब्लग आधारमा पथहरू पुन: लेख्न आवश्यक छ र यसलाई पुन: लेख्ने नियम र एकसँग गर्दछ। PHP फाइल।
WordPress ले निम्न पुनःलेखन नियम प्रयोग गर्दछ:
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
भाँचिएको, यसको अर्थ:
RewriteRule
- यो निर्देशनले Apache लाई बताउँछ कि यो पुन: लेख्ने नियम हो।^([_0-9a-zA-Z-]+/)?
- यो एक नियमित अभिव्यक्ति हो (RegEx) जुन वर्णहरूको स्ट्रिङसँग मेल खान्छ जुन अल्फान्यूमेरिक क्यारेक्टरहरू र हाइफनहरूको वैकल्पिक स्ट्रिङबाट सुरु हुन्छ र त्यसपछि स्ल्याश हुन्छ। कोष्ठकहरूले क्याप्चर समूहलाई सङ्केत गर्छ, जसको अर्थ मिल्ने पाठलाई प्रतिस्थापन स्ट्रिङमा प्रयोग गर्न सकिन्छ।files/
- यसले "फाइल/" स्ट्रिङसँग मेल खान्छ।(.+)
- यो अर्को क्याप्चर समूह हो जुन वर्णहरूको कुनै पनि स्ट्रिङसँग मेल खान्छ, एक वा धेरै पटक।wp-includes/ms-files.php?file=$2
- यो प्रतिस्थापन स्ट्रिङ हो जसले मेल खाएको स्ट्रिङलाई प्रतिस्थापन गर्दछ। यसले Apache लाई "wp-includes/ms-files.php" मा अनुरोध रिडिरेक्ट गर्न भन्छ, दोस्रो क्याप्चर समूह ($2) को "फाइल" भनिने क्वेरी प्यारामिटरको रूपमा।[L]
- यो एक झण्डा हो जसले Apache लाई कुनै पनि थप नियमहरू प्रशोधन गर्न रोक्न भन्छ यदि यो नियम मेल खान्छ।
अनिवार्य रूपमा, mysite.com/files/directory को सबडाइरेक्टरीमा रहेको केहि पनि mysite.com/files/wp-includes/myblogfolderpath… मा लेख्छन् र यो जहाँ यो चाखलाग्दो हुन्छ। के हुन्छ यदि तपाइँसँग वास्तवमै तपाइँको सर्भरमा फाईल हुनु पर्छ जुन mysite.com/files/myfolder/myimage.jpg हो? तपाईं एक 404०XNUMX त्रुटि पाउनुहुन्छ, त्यो के हुन्छ। अपाचे पुनर्लेखन नियम मा लात मा बाटो मा परिवर्तन गर्दछ।
हो, तपाईं यो समस्या कहिले पनि आउन सक्नुहुन्न, तर मैले गरे। मसँग एउटा साइट थियो जुन अर्को वेबसाइटबाट जाभास्क्रिप्ट विजेट प्रयोग गर्न आवश्यक थियो, र यसको लागि 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
- यो निर्देशनले Apache लाई बताउँछ कि यो एक RewriteCond नियम हो।%{REQUEST_URI}
- यो एक सर्भर चर हो जसले अनुरोध गरिएको URI को मार्ग समावेश गर्दछ।!
- यो एक नकारात्मक अपरेटर हो जसको अर्थ "होइन" हो। यो अवस्था उल्टाउन प्रयोग गरिन्छ।/?files/Image/file1.jpg$
- यो एक नियमित अभिव्यक्ति हो जुन अनुरोध गरिएको URI को अन्त्यमा "/files/Image/file1.jpg" ठ्याक्कै स्ट्रिङसँग मेल खान्छ। "फाइलहरू" अघि प्रश्न चिन्ह र फर्वार्ड स्ल्याशले अग्रणी स्ल्याशलाई वैकल्पिक बनाउँछ।
लाइन 2:
RewriteCond
- यो निर्देशनले Apache लाई बताउँछ कि यो एक RewriteCond नियम हो।%{REQUEST_URI}
- यो एक सर्भर चर हो जसले अनुरोध गरिएको URI को मार्ग समावेश गर्दछ।!
- यो एक नकारात्मक अपरेटर हो जसको अर्थ "होइन" हो। यो अवस्था उल्टाउन प्रयोग गरिन्छ।/?files/Image/file2.jpg$
- यो एक नियमित अभिव्यक्ति हो जुन अनुरोध गरिएको URI को अन्त्यमा "/files/Image/file2.jpg" ठ्याक्कै स्ट्रिङसँग मेल खान्छ। "फाइलहरू" अघि प्रश्न चिन्ह र फर्वार्ड स्ल्याशले अग्रणी स्ल्याशलाई वैकल्पिक बनाउँछ।
लाइन 3:
RewriteRule
- यो निर्देशनले Apache लाई बताउँछ कि यो पुन: लेख्ने नियम हो।^([_0-9a-zA-Z-]+/)?
- यो एक नियमित अभिव्यक्ति हो जुन वर्णहरूको स्ट्रिङसँग मेल खान्छ जुन अल्फान्यूमेरिक वर्णहरू र हाइफनहरूको वैकल्पिक स्ट्रिङबाट सुरु हुन्छ र त्यसपछि स्ल्याश हुन्छ। कोष्ठकहरूले क्याप्चर समूहलाई सङ्केत गर्छ, जसको अर्थ मिल्ने पाठलाई प्रतिस्थापन स्ट्रिङमा प्रयोग गर्न सकिन्छ।files/
- यसले "फाइल/" स्ट्रिङसँग मेल खान्छ।(.+)
- यो अर्को क्याप्चर समूह हो जुन वर्णहरूको कुनै पनि स्ट्रिङसँग मेल खान्छ, एक वा धेरै पटक।wp-includes/ms-files.php?file=$2
- यो प्रतिस्थापन स्ट्रिङ हो जसले मेल खाएको स्ट्रिङलाई प्रतिस्थापन गर्दछ। यसले Apache लाई "wp-includes/ms-files.php" मा अनुरोध रिडिरेक्ट गर्न भन्छ, दोस्रो क्याप्चर समूह ($2) को "फाइल" भनिने क्वेरी प्यारामिटरको रूपमा।[L]
- यो एक झण्डा हो जसले Apache लाई कुनै पनि थप नियमहरू प्रशोधन गर्न रोक्न भन्छ यदि यो नियम मेल खान्छ।
पुनर्लेखन सर्तहरू पुनर्लेखन नियम अघि राख्नु पर्छ, वा यो चालले काम गर्दैन। यो अवस्थालाई तपाईको आफ्नै उद्देश्यका लागि परिमार्जन गर्न सजिलो हुनुपर्दछ, यदि तपाईंले यस्तै समस्या सामना गर्नुपर्यो। समाधानले मेरो लागि ठूलो काम गर्यो, मलाई अनुकूलन ग्राफिक्स प्रतिस्थापन गर्न अनुमति दिईयो बरु मेरो डिजाईन अनुरूप नभएको कम टेक्स्टेबल वैकल्पिक टेक्स्टको तुलनामा। आशा छ, यसले तपाईको लागि पनि काम गर्दछ।