एक वेबसाइट बनाम डेटाबेस आईडी की वास्तविकताओं के लिए अनुकूल URL प्रदान करना


24

हमारे पास संसाधनों का एक डेटाबेस है, वे उत्पाद, ब्लॉग पोस्ट या कुछ और हैं। हमें सार्वजनिक वेबसाइट के लिए, उन्हें संबोधित करने के लिए एक URL योजना डिज़ाइन करने की आवश्यकता है।

यहाँ दो उदाहरण हैं जो डेटाबेस आईडी बाउंड हैं:

यहाँ एक उदाहरण है जो अनुकूल है:

(वहाँ मेरे ब्राउज़िंग जीवन में एक छोटी सी झलक)

जब से आपको ईमेल करने या दस्तावेज़ में देखने या उसे देखने के बाद URL के अंत में क्या है, इस बारे में आपके विचार से मुझे दोस्ताना URL पसंद है। यह एसईओ के लिए बेहतर है, या यह हुआ करता था।

दस्तावेज़ या उत्पाद का नाम बदलने पर क्या होता है? या तो क्योंकि यह बदल गया (विकी नहीं बदल सकता है लेकिन हमारे संसाधन बदल सकते हैं) या एक टाइपो के कारण, सही? हमारे संसाधन बहुत ही तकनीकी, लंबे शब्द और त्रुटि प्रवण हैं।

इसके अलावा, हमारे पास एक डेटाबेस आईडी है, जो एक नंबर है। आइए एक नाटक के किराये की दुकान का उपयोग करते हुए एक वीडियो के पते के लिए एक विचार देखें:

आईडी स्पष्ट है और इसका उपयोग डीबी लुक-अप में किया जाता है। ठीक।

स्लाइडिंग-दरवाजे बिट गैर-अद्वितीय है और सिर्फ वीडियो शीर्षक से उत्पन्न होता है, इसे जीईटी पर सत्यापित किया जा सकता है, इसलिए यदि ग्लाइडिंग-दरवाजे दर्ज किए गए थे और मेल नहीं खाता है कि वास्तव में डॉक्टर 287171 में इसका जवाब 404 है।

या शायद इसे नजरअंदाज किया जा सकता है, जिससे इंसानों को वहां जो कुछ भी पसंद है उसे छड़ी करने की अनुमति मिलती है, अगर किसी ने कभी परवाह की। तो यह URL भी काम करेगा:

मित्रवत भाग को सत्यापित करने के साथ समस्या है, जैसा कि उल्लेख किया गया है, नाम बदलने या टाइपो सुधार की समस्या। यदि नाम बदल गया है, और हमारे डोमेन में ऐसा होता है, तो हम उन URL को तोड़ना नहीं चाहते हैं जो वहाँ हैं, इसलिए हमें चाहिए:

  • बस मैत्रीपूर्ण भाग को सत्यापित न करें।

  • सत्यापित करें, लेकिन डेटाबेस रिकॉर्ड के लिए मैत्रीपूर्ण भागों का एक 'इतिहास' जोड़ें ताकि कोई भी पिछली दोस्ताना आईडी अभी भी काम करे!

आपके विचारों और विचारों का स्वागत है।

ल्यूक


11
यहां तक ​​कि यह बहुत ही साइट एक संयोजन का उपयोग करता है http://programmers.stackexchange.com/questions/255684/providing-friendly-urls-for-a-website-vs-realities-of-database-ids(शीर्षक परिवर्तनों के प्रकाश में एक गैर-सत्यापित संस्करण का उपयोग करके, यह भी छोटा "शेयर" लिंक सिर्फ आईडी है: http://programmers.stackexchange.com/q/255684/25768(और बैज ट्रैकिंग के लिए उपयोगकर्ता आईडी)
शाफ़्ट फ्रीक

11
यदि आपके पास अपने URL में एक अद्वितीय आईडी है, तो मैं यह नहीं देखता कि आप स्लग भाग का सत्यापन क्यों करना चाहते हैं। लुक्स के लिए इसका इस्तेमाल करें और लुक्स के लिए इसे अनदेखा करें।
थोरस्टेन मुलर

यदि आप में से कोई एक उचित उत्तर देना चाहता है, तो मैं आपको वोट दूंगा ताकि आप अंक प्राप्त कर सकें। मैं वोटों को आने दूंगा और एक-दो दिनों में सबसे ज्यादा वोट पाने वालों को जवाब दूंगा।
ल्यूक पुप्लेट ने


3
पहले स्लग शब्द को कभी नहीं जानते थे। मैं एक चट्टान के नीचे रहा होगा। Geddit?
ल्यूक पुप्लेट

जवाबों:


6

URL में ID रखना सबसे भविष्य की प्रमाण विधि है और जैसा कि आपने प्रदर्शित किया है, URL अभी भी अपेक्षाकृत अच्छे दिख सकते हैं।

कई परियोजनाओं द्वारा उपयोग किया जाने वाला एक अन्य विकल्प पहले से इस्तेमाल किए गए स्लग का इतिहास रखना है। जब शीर्षक बदलता है, तो आप स्लग को अपडेट करते हैं और यदि कोई अप्रचलित स्लग की तलाश करता है, तो पुराने स्लग की सूची में खोजें। इस तरह से पुराने स्लग को नई सामग्री (या आपके कार्यान्वयन के आधार पर नहीं) के लिए पुन: उपयोग किया जा सकता है।

Wordpress ने ऐसा किया और मैत्रीपूर्ण_आईडी मणि जो शायद रेल के लिए अनुकूल id के प्रबंधन के लिए सबसे अधिक इस्तेमाल किया जाने वाला मणि है।

इसके अलावा, जब मैं अच्छे दिखने वाले URL को पसंद करता हूं, तो मुझे लगता है कि यह याद रखना महत्वपूर्ण है कि यह अधिक तकनीकी जानकार उपयोगकर्ताओं द्वारा उपयोग की जाने वाली विशेषता है। कुछ ब्राउज़र URL (या उसके कुछ भाग) को छिपाना शुरू कर रहे हैं।


2
यह स्लग इतिहास है जो मैं विचार कर रहा था। प्रश्न पोस्ट करने के बाद से, मैंने कई बड़ी नामित साइटों पर ध्यान दिया है, जिनके पास एक स्लग है जिसे चेक नहीं किया गया है, आप इसे कुछ भी कहने के लिए बदल सकते हैं। amazon.co.uk/Blah-Blah-Blah/dp/B004R276L8 काम करता है। StackExchange चतुर है क्योंकि यह 'सही' है और सही लिंक दिखाया गया है और साझा किया जाता है यह सुनिश्चित करने के लिए ब्राउज़र को पुनर्निर्देशित करता है।
ल्यूक पुप्लेट

"स्लग" लोगों के लिए कम उपयोगी है, और सर्च इंजन ऑप्टिमाइज़ेशन के लिए अधिक उपयोगी है, क्योंकि "स्लग" या "फ्रेंडली यूआरएल" में पृष्ठ की सामग्री से संबंधित कीवर्ड होने चाहिए। उन्नत उपयोगकर्ता आपकी साइट में अनुकूल URL शामिल करने का कारण नहीं हैं। खोज इंजन रैंकिंग इसका मुख्य कारण है।
ग्रेग बरगार्ड

मैं असहमत हूं। सिर्फ आईडी वाले URL के साथ काम करना मुश्किल है; इसकी एक सूची से याद रखना कठिन है, जिसे आप वापस करना चाहते हैं। या लिंक के दूसरे छोर पर कुछ अनुचित होने वाला है या नहीं। Chrome का पता बार URL के किसी भाग पर भी सुझाता है, जो कि उपयोगी है।
ल्यूक पुप्लेट

1
@LukePuplett हाँ मेरा मानना ​​है कि एसई का यूआरएल से निपटने का तरीका सबसे आसान है जब यह स्लग की बात आती है।
mbillard

@GregBurghardt का अंतर केवल क्लिकथ्रू दर में है, उपयोगकर्ता दोस्ताना URL पर थोड़ा और क्लिक करते हैं: stackoverflow.com/questions/505793/…
mbillard

3

मैंने अतीत में दो अलग-अलग परिदृश्यों का उपयोग किया है।

  1. /id/some-slugजहां देखने के लिए प्रयोग किया जाता है , स्लग नहीं। इस प्रकार स्लग कुछ भी हो सकता है । लेकिन, जब स्लग वास्तविक स्लग के साथ मेल नहीं खाता है, तो उपयोगकर्ता को वर्तमान संस्करण पर पुनर्निर्देशित किया जाता है।id

  2. /permalinkउन मामलों के लिए जहां हमें url में एक आईडी नहीं चाहिए या जहां url को कभी भी बदलना नहीं चाहिए, भले ही वहां एक id उपलब्ध हो (देखें [1] और [2] )। बेशक, इस मामले में देखने के लिए प्रयोग किया जाता है । वर्तमान स्लग और पर्मलिंक (पहला स्लग) दोनों को डेटाबेस में संग्रहीत किया जाता है।permalink

इन तरीकों में से किसी में भी आपको अपने डेटाबेस में स्लग का इतिहास रखने की आवश्यकता नहीं है, जो बहुत जल्द समस्याग्रस्त हो जाएगा।


ps: दूसरे मामले में आपको सामाजिक क्रेडिट रखने के लिए कुछ बहुत ही विशिष्ट मार्ग की आवश्यकता होगी:

  • यदि आप चाहते हैं, तो उपयोगकर्ताओं को वर्तमान (गैर-पर्मलिंक) यूआरएल पर पुनर्निर्देशित करें
  • पर्मालिंक को सामाजिक बटन में url के रूप में उपयोग किया जाता है
  • हमेशा फेसबुक क्रॉलर को पर्मलिंक पर पुनर्निर्देशित करें

फिर से देखें [१] और [२]


यह समस्याग्रस्त क्यों होगा? अगर मैं रखता हूं और आईडी और स्लग कुछ भी है, तो आगंतुक वास्तविक पृष्ठ पर जाएगा। क्या यह SEO के लिए हानिकारक होगा?
ज्ञानरंजन

आप झुग्गियों का इतिहास रखने का मतलब है? जब कोई ऐसे स्लग का फिर से इस्तेमाल करना चाहता है तो आप क्या करते हैं? उसी या किसी और आईडी के लिए? आप कई रीडायरेक्ट को रोकने के लिए डेटाबेस और / या कोड को कैसे डिज़ाइन करते हैं? क्या आप विलोपन के बाद अस्तित्व को छिपाना चाहते हैं और पिछले अस्तित्व को पुनः निर्देशित कर रहे हैं? यह सब असंभव नहीं है, लेकिन यह उन सभी तरह के सवालों को उठाता है, जिन्हें मैं सिर्फ डिजाइन से रोकता हूं।
परत

मैं जो कहना चाहता था वह यह है कि यदि आईडी URL में मौजूद है तो कोई फर्क नहीं पड़ता कि यह स्लग है या नहीं, यह अनुरोधित पृष्ठ पर पुनर्निर्देशित किया जाएगा। फिर स्लग इतिहास कोई मायने नहीं रखता। मैं मानता हूँ कि यह Android के लिए समस्याग्रस्त है।
ज्ञानरंजन

1
आह ठीक है। यही कारण है कि मैंने एक परिदृश्य 1 सही जोड़ा है? या आप कुछ और मतलब है?
परत

हाँ। वह सही है।
ज्ञानरंजन

2

दस्तावेज़ या उत्पाद का नाम बदलने पर क्या होता है?

HTTP प्रतिक्रिया 301 (मूव्ड) को इस उद्देश्य के लिए डिज़ाइन किया गया था। यदि कोई भी ग्राहक पुराने URI में जाता है तो आप बस उन्हें नया URI भेजते हैं और वे उस पर पुनर्निर्देशित कर सकते हैं।

स्लाइडिंग-दरवाजे बिट गैर-अद्वितीय है और सिर्फ वीडियो शीर्षक से उत्पन्न होता है, इसे जीईटी पर सत्यापित किया जा सकता है, इसलिए यदि ग्लाइडिंग-दरवाजे दर्ज किए गए थे और मेल नहीं खाता है कि वास्तव में डॉक्टर 287171 में इसका जवाब 404 है।

यदि मैं सही ढंग से अनुसरण करता हूं तो यह डुप्लिकेटिंग कार्य है, आपके पास संसाधन के लिए एक नाम पहचानकर्ता और एक ही यूआरआई में एक आईडी है। यह किसी भी उद्देश्य की पूर्ति नहीं करता है।

यदि आप एक ही नाम वाली कई फिल्मों से चिंतित हैं, तो आप फिल्म के बारे में अतिरिक्त जानकारी URL में जोड़ सकते हैं

http://vidsyeah.com/video/2000/sliding_doors
http://vidsyeah.com/video/1932/sliding_doors

या

http://vidsyeah.com/video/studios/paramount/sliding_doors
http://vidsyeah.com/video/studios/warnerbros/sliding_doors

यह कहते हुए कि आईडी का उपयोग करने में कुछ भी गलत नहीं है यदि वह आपके डेटा मॉडल के लिए समझ में आता है, खासकर यदि आपके द्वारा समूहीकृत होने वाली एकमात्र चीज यह है कि वे वीडियो हैं।

http://vidsyeah.com/video/210232
http://vidsyeah.com/video/2342

क्लाइंट, या तो एक कंप्यूटर या एक मानव उपयोगकर्ता पहले स्थान पर यूआरआई संरचना पर बहुत अधिक निर्भर नहीं होना चाहिए, उन्हें उस सामग्री को देखना चाहिए जिसे आपने पता लगाया है कि किस संसाधन को ढूंढना है।

एक समझदार यूआरआई सिस्टम होने में कुछ भी गलत नहीं है, जिससे किसी के लिए सिर्फ एक संसाधन की स्थिति का अनुमान लगाना या साझा गुणों (यानी 2004 में सभी फिल्में) के आधार पर संरचना को ऊपर-नीचे करना आसान हो जाता है, लेकिन आपके सिस्टम को भरोसा नहीं करना चाहिए यदि आप अपने यूआरआई को बदलते हैं तो उस पर और किसी भी ग्राहक को नहीं तोड़ना चाहिए

या इसे दूसरे तरीके से रखने के लिए, आपको रात में से बदलने में सक्षम होना चाहिए

http://vidsyeah.com/video/studios/paramount/sliding_doors

सेवा मेरे

http://vidsyeah.com/video/12323

और किसी भी ग्राहक को नहीं तोड़ना चाहिए क्योंकि क्लाइंट को URL नहीं सामग्री पर ध्यान देना चाहिए।


जॉन के जवाब की तरह, मुझे लगता है कि आप इस बारे में सोचते समय अपनी UX टोपी नहीं पहन रहे हैं। मैं पते की उपयोगिता को बढ़ाना चाहता हूं। मेरी टिप्पणी को प्रश्न में देखें: "मुझे मित्रवत URL पसंद हैं क्योंकि आपको इस बात का अंदाजा है कि जब आप किसी ईमेल या दस्तावेज़ में होवर करते हैं या उसे देखते हैं, तो यह URL के अंत में क्या होता है। यह SEO के लिए बेहतर है, या इसका उपयोग किया जाता है।"
ल्यूक पुप्लेट

2
301 को फेंकने के लिए, मुझे सही संसाधन देखने में सक्षम होना चाहिए, इस प्रकार मुझे एक इतिहास की आवश्यकता होगी।
ल्यूक पुप्लेट

1
आपको एक इतिहास की आवश्यकता होगी, लेकिन यदि आपके पास संसाधनों के साथ एक साइट है जो बदल जाती है जो वैसे भी एक अच्छा विचार है।
कॉर्मैक मुलहाल

मित्रवत URI से कोई समस्या नहीं है। मैं यह योजना नहीं करता कि यूआरआई कुछ भी हो सकता है, लेकिन फिर भी अगर यह अंत में एक आईडी है तो काम करेगा। यह वास्तव में किसी भी मुद्दे को हल नहीं करता है (उपयोगकर्ता को अभी भी आईडी याद रखना है) और एक भ्रामक यूआरआई योजना पेश करता है (उपयोगकर्ता वैध रूप से पूछ सकता है कि दो अलग-अलग यूआरआई, एक वर्तनी की गलती के साथ एक ही संसाधन पर क्यों जाएं)
कॉर्मैक मूली

1
यदि आप यूआरआई में वर्तनी की गलतियों के बारे में चिंतित हैं तो इससे निपटने के लिए एक सामान्य तरीका गलत तरीके से लिखे गए यूआरएल के लिए 404 त्रुटि पेज में यूआरआई का सुझाव दिया गया है। आप एक शब्द पैटर्न खोज कर सकते हैं और वापस दे सकते हैं जो आपको लगता है कि उपयोगकर्ता की तलाश में हो सकता है।
कॉर्मैक मुलहाल

1

बीबीसी ने स्लग का उपयोग किया है:

  • अल्फा-न्यूमेरिक (कॉम्पैक्टनेस के लिए)
  • अद्वितीय (लुकअप के लिए)
  • गैर-अनुक्रमिक (ताकि आदेश चीजें डीबी में जोड़ी जाती हैं उजागर नहीं होती हैं)

जैसे http://www.bbc.co.uk/programmes/b006mk7h

प्रत्येक सार्वजनिक कार्यक्रम में एक आईडी और एक स्लग दोनों होते हैं। आईडी हमेशा की तरह स्वतः पूर्णांक बढ़ा सकते हैं, और अंतराल उजागर नहीं होते हैं।


0

एक अस्थिर दृष्टिकोण से, यूआरआई को प्रयोज्यता बढ़ाने के लिए एक पूर्वानुमान योग्य और लंबवत संरचना का पालन करना चाहिए।

इससे उन्हें उपभोक्ताओं द्वारा उपयोग करने में आसानी होगी। यदि आपके डेटा में संबंध हैं, तो कुछ प्रकार की पदानुक्रम आवश्यक होगी।

ऐसा लगता है कि यह योजना है: \video\[name]\[id]

यदि नाम का उपयोग किसी और वर्गीकरण के लिए नहीं किया जा रहा है, तो इसके पक्ष में गिराया जा सकता है \video\[id].

हालाँकि, यदि आप वीडियो को वर्गीकृत करना चाहते हैं तो शायद नाम उपयोगी है।

उदाहरण:

  • \ वीडियो \ SwingingDoors \ 123
  • \ वीडियो \ SwingingDoors \ 124
  • \ वीडियो \ SlidingDoors \ 125
  • \ वीडियो \ SlidingDoors \ 126

यह वास्तव में एक डिज़ाइन निर्णय है कि कैसे पहुंच का मॉडल तैयार किया गया है।


मुझे लगता है कि आप एपीआई / साइट की जानकारी आर्किटेक्चर पीओवी से इस बारे में सोच रहे हैं। मैं मनुष्यों और एसईओ की मदद करने के लिए एक उत्पन्न अनुकूल URL भाग शुरू करना चाहता था। जाहिरा तौर पर यह एक सामान्य बात है और 'स्लग' के नाम से जाना जाता है। नाम का उपयोग वर्गीकरण के लिए नहीं किया जा रहा है और URL और हमारी साइट / ब्रांड के साथ एक बेहतर UX बनाने के लिए जोड़ा (गिराया नहीं) गया है।
ल्यूक पुप्लेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.