मेरे पास निम्न URL ...मैं कैसे एक नियम के मैच के लिए mod_rewrite प्राप्त कर सकते हैं बस एक बार
http://localhost/http.mygarble.com/foundationsofwebprogramming/86
... कि मैं निम्नलिखित में कनवर्ट करना चाहते हैं:
मैंने सोचा कि मैं निम्नलिखित नियम के साथ इस लक्ष्य को हासिल कर सकते हैं:
RewriteRule ([^/]+)/([^/]+)$ php/blog.php?subdomain=$1&page=post&label=$2 [NC,L]
हालांकि मुझे क्या लगता है कि यह नियम बार-बार लागू होता है, जिसके परिणामस्वरूप आंतरिक सर्वर त्रुटि होती है। मैं समझता हूं कि जब इस नियम का उपयोग करते हुए यूआरआई बदल जाता है, परिणामी यूआरआई भी नियम से मेल खाता है, और इसलिए इसे विज्ञापन-infinitum फिर से लागू किया जाता है।
मेरे पिछले (वैसे नहीं बल्कि धुंधला) समझ गया था कि [एल] ध्वज आगे की प्रक्रिया बंद कर देंगे, हालांकि मैं अब समझता हूँ कि इस का अर्थ है कि केवल नियमों के शेष को छोड़ दिया जाता है, और रीराइट इंजन चल रहा है बंद नहीं होता नियमों के माध्यम से फिर से।
मैं निम्नलिखित शर्त जोड़कर इस समस्या को ठीक कर सकते हैं ...
RewriteCond $0 !php/blog.php
RewriteRule ([^/]+)/([^/]+)$ php/blog.php?subdomain=$1&page=post&label=$2 [NC,L]
... या अधिक स्पष्ट रूप नियमित अभिव्यक्ति लिख कर। लेकिन मैं वास्तव में क्या करना चाहता हूं, इस नियम को एक बार मेल खाने के बाद किसी और मैच का प्रयास करने से पुनः लिखने वाले इंजन को रोकने का एक तरीका मिल गया है। क्या यह संभव है?
बहुत धन्यवाद।
दूसरा समाधान आदर्श है। केवल एक ही रीडायरेक्ट जो मैं चाहता हूं बाहरी हैं, सभी नियम केवल एक बार चलने के लिए हैं। धन्यवाद कृपया। –
दुर्भाग्यवश मेरे पास आपके उत्तर को वोट देने की प्रतिष्ठा नहीं है, शायद कोई मेरी तरफ से ऐसा करेगा। एक बार फिर धन्यवाद। –
@ जेम्स स्मिथ: आपको मेरे उत्तर को ऊपर उठाने की आवश्यकता नहीं है, आपको बस इसे "स्वीकार" करना चाहिए (ताकि मुझे हरा मार्कअप मिल गया हो)। – regilero