बिना मैं अक्सर देखते हैं उस में आईडी के बिना (फिर से लिखा) यूआरएल, कुछ वर्डप्रेस प्रतिष्ठानों पर की तरह। इसे प्राप्त करने का सबसे अच्छा तरीका क्या है? उदाहरण: साइट.com/product/some-product-name/ कैश में पृष्ठ नामों और आईडी की सरणी रखने के लिए, प्रत्येक पृष्ठ अनुरोध पर डीबी क्वेरी से बचने के लिए? विवादों से कैसे बचें, और आईडी के बिना यूआरएल का उपयोग करने के अन्य मुद्दे क्या हैं?यूआरएल आईडी
उत्तर
एक आईडी का उपयोग करना एक ही conundrum प्रस्तुत करता है, वास्तव में - आप बस अपने डेटाबेस में एक अलग मूल्य की जांच कर रहे हैं। उपर्युक्त यूआरएल का "कुछ उत्पाद-नाम" हिस्सा कुछ अद्वितीय भी है। कुछ लोग उन्हें स्लग कहते हैं (वर्डप्रेस, पर्मलिंक्स)। तो उस पंक्ति के लिए डेटाबेस से पूछताछ करने के बजाय जिसमें विशेष आईडी है, आप उस पंक्ति के लिए डेटाबेस से पूछताछ कर रहे हैं जिसमें एक विशेष स्लग है। रिकॉर्ड प्राप्त करने के लिए आपको आईडी को जानने की आवश्यकता नहीं है।
जब तक उत्पाद नाम अद्वितीय यह कोई मुद्दा नहीं होना चाहिए। कॉलम अनुक्रमित होने तक संख्यात्मक आईडी की तुलना में अद्वितीय नाम से उत्पाद को देखने के लिए अब तक (कम से कम महत्वपूर्ण नहीं) नहीं लगेगा।
वर्डप्रेस में स्लग के लिए wp_posts तालिका में एक फ़ील्ड है। जब आप पोस्ट बनाते हैं, तो यह पोस्ट शीर्षक से एक स्लग बनाता है (यदि यह है कि आपने इसे कैसे कॉन्फ़िगर किया है), तो डैश के साथ रिक्त स्थान बदलना (या मुझे लगता है कि आप इसे अंडरस्कोर पर सेट कर सकते हैं)। यह apostrophes, अल्पविराम, या क्या नहीं लेता है। मेरा मानना है कि यह भी स्लग की समग्र लंबाई को सीमित करता है।
तो, संक्षेप में, यह पोस्ट के शीर्षक में यूआरएल को गतिशील रूप से डीकोड नहीं कर रहा है - तालिका में एक फ़ील्ड है जो सीधे पोस्ट नाम के यूआरएल संस्करण से मेल खाता है।
जैसा कि आप जानते हैं या नहीं जानते हैं, यूआरएल को अपाचे के mod_rewrite मॉड्यूल के साथ फिर से लिखा जा रहा है। जैसा कि यहां बताया गया है, वर्डप्रेस पृष्ठभूमि में है, शीर्षक या पोस्ट नाम को स्वच्छ करने के बाद एक स्लग असाइन करना।
लेकिन, अपने प्रश्न का उत्तर देने के लिए, आप जो वर्णन कर रहे हैं वह है वर्डप्रेस '"सुंदर पर्मलिंक्स" सुविधा और आप Wordpress codex में इसके बारे में अधिक जान सकते हैं। वर्डप्रेस के नए संस्करण आंतरिक रूप से फिर से लिखते हैं (नहीं। Htaccess editin, wp_rewrite इसके बजाए)। यही कारण है कि आप किसी भी परमालिंक संरचना के लिए एक ही नियमसेट देखेंगे।
हालांकि, कुछ आप पुराने पुनर्लेखन नियम पा सकते हैं खुदाई यदि आप करते हैं। उदाहरण के लिए:
RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&day=$3 [QSA,L]
/2008/01/01/
की तरह एक यूआरएल ले लेंगे और /index.php?year=2008&monthnum=01&day=01
को यह निर्देश दे (और एक तिथि श्रेणी लोड)।
लेकिन, जैसा कि उल्लेख किया है, product-name
की तरह एक पृष्ठ मौजूद केवल क्योंकि Wordpress पहले से ही पोस्ट शीर्षक स्वच्छ और डेटाबेस में एक क्षेत्र के रूप में यह संग्रहीत।
अच्छा, इसमें काफी समय लगेगा, लेकिन यह अभी भी देखभाल करने के लिए पर्याप्त तेज़ नहीं है। –