2010-10-06 9 views
5

विकिपीडिया (या सामान्य रूप से मीडियाविकि) यूआरआई में पृष्ठ शीर्षक कैसे एन्कोड करते हैं? यह सामान्य यूआरआई एन्कोडिंग नहीं है, क्योंकि रिक्त स्थान अंडरस्कोर के साथ प्रतिस्थापित किए जाते हैं और डबल कोट्स एन्कोड नहीं किए जाते हैं और ऐसी चीजें हैं।विकिपीडिया (मीडियाविकि) यूआरआई एन्कोडिंग योजना

उत्तर

4

http://en.wikipedia.org/wiki/Wikipedia:Naming_conventions_%28technical_restrictions%29 - यहां आपको लेख के नामों पर उनके इंजन को लागू करने के बारे में कुछ प्रकार का विवरण मिला है।

उनके पास उनके स्थानीय सेटिंग्स.php: $ wgArticlePath = '/ wiki/$ 1' में ऐसा कुछ होना चाहिए;

और उचित सर्वर यूआरआई कॉन्फ़िगरेशन को फिर से लिखता है - वे अपाचे (HTTP शीर्षलेख) का उपयोग कर रहे हैं, इसलिए यह शायद mod_rewrite है। http://www.mediawiki.org/wiki/Manual:Short_URL

आप भी इस तरह विकिपीडिया पर एक लेख के लिए index.php फ़ाइल को संदर्भित कर सकते हैं: http://en.wikipedia.org/w/index.php?title=Foo%20bar और http://en.wikipedia.org/wiki/Foo_bar के इंजन द्वारा निर्देशित कर दिये जाते हैं। दृश्यों के पीछे mod_rewrite इसे /index.php?title=Foo_bar में अनुवादित करता है। मीडियाविकि इंजन के लिए यह वही है जैसे आपने http://en.wikipedia.org/w/index.php?title=Foo_bar का दौरा किया - यह पृष्ठ आपको रीडायरेक्ट नहीं करता है।

+0

मेरा मानना ​​है कि 'mod_rewrite' URL को' index.php? Title = Foo_bar' पर फिर से लिखता नहीं है। लिंक 'इंडेक्स' पर फिर से लिखे गए हैं (यदि बिल्कुल)।php/foo_bar' और उसके बाद '$ _SERVER ['REQUEST_URI'] 'या कुछ समान पढ़ें। – lonesomeday

6

प्रक्रिया काफी जटिल है और बिल्कुल सुंदर नहीं है। में आपको Title कक्षा को देखने की आवश्यकता है। आपको newFromText विधि से शुरू करना चाहिए, लेकिन तर्क का बड़ा हिस्सा secureAndSplit विधि में है।

ध्यान दें कि (जैसा कि कभी भी मीडियाविकि के साथ) कोड मामूली में decoupled नहीं है। यदि आप इसे दोहराना चाहते हैं, तो आपको कक्षा को फिर से उपयोग करने के बजाय तर्क निकालना होगा। ;

  • कन्वर्ट रिक्त स्थान को रेखांकित करने के लिए
  • चेक शीर्षक एक नाम स्थान के लिए एक संदर्भ है कि क्या है या
  • इंटरविकी

    • डिकोड चरित्र संदर्भ (जैसे & eacute):

      तर्क कुछ इस तरह दिखता

    • हैश टुकड़े निकालें (उदाहरण के लिए Apple#Name
    • वर्जित वर्ण हटाएं
    • फोर्बिड उपनिर्देशिका लिंक (उदा। ../directory/page)
    • ना करे ट्रिपल टिल्ड दृश्यों (~~~) (किसी कारण से)
    • सीमा 255 बाइट्स
    • के आकार पहले अक्षर

    इसके अलावा कैपिटल में, मेरा मानना ​​है कि मुझे लगता है कि कह में सही हूँ उद्धरण चिह्नों को मूल उपयोगकर्ता द्वारा एन्कोड करने की आवश्यकता नहीं है - ब्राउज़र उन्हें पारदर्शी रूप से संभाल सकते हैं।

    मुझे उम्मीद है कि इससे मदद मिलती है!

    +0

    और अनुभाग नाम ([[ऐप्पल # यहां नाम]], #Name_here बिट) कैसे संसाधित होते हैं ...? आपने कहा है कि 'हैश टुकड़े हटाएं' जैसे कि उन्हें अनदेखा किया जाता है। –

    +0

    "फोर्बिड ट्रिपल टिल्डे अनुक्रम (~~~) (किसी कारण से)" - ट्रिपल टिल्ड्स [विस्तारित होते हैं] (https://www.mediawiki.org/wiki/Help:Signatures) पेज सेव पर हस्ताक्षर करने के लिए, इसलिए यह बनाता है उन्हें शीर्षक में अनुमति न दें (इस तरह के एक पृष्ठ से लिंक करना मुश्किल या असंभव होगा)। – leo