निरपेक्ष बनाम सापेक्ष URL


214

मैं इन दो प्रकार के URL के बीच के अंतरों को जानना चाहूंगा: सापेक्ष URL (चित्रों के लिए, CSS फाइलें, JS फाइल आदि) और निरपेक्ष URL।

इसके अलावा, कौन सा उपयोग करना बेहतर है?

जवाबों:


191

सामान्य तौर पर, सापेक्ष URL का उपयोग करना सबसे अच्छा अभ्यास माना जाता है, ताकि आपकी वेबसाइट उस आधार URL के लिए बाध्य न हो, जहाँ वह वर्तमान में तैनात है। उदाहरण के लिए, यह स्थानीयहोस्ट के साथ-साथ आपके सार्वजनिक डोमेन पर, बिना संशोधनों के काम करने में सक्षम होगा।


6
+1 मैं सहमत हूं। उदाहरण के लिए, सीडीएन का उपयोग करते समय या यदि आपको सामग्री वेबसाइट को बदलने की आवश्यकता होती है, तो (कुछ) समय हो सकता है। एक डोमेन नाम के लिए खोज करना रिश्तेदार यूआरएल IMHO की खोज करने की तुलना में बहुत आसान है।
सुनीत रिवर्स

67
रखरखाव प्रयोजनों के लिए डोमेन नाम के बिना निरपेक्ष URL का उपयोग करना आसान हो सकता है। यानी स्टैकऑवरफ्लो इस प्रश्न से लिंक करने के लिए पूर्ण URL '/ प्रश्न / 2005079 / निरपेक्ष-सापेक्ष-यूआरएल' का उपयोग करें। मोर्चे पर '/' URL को पूर्ण बनाता है। जब आप अपनी फ़ाइलों को इधर-उधर करने या अपनी परियोजना की निर्देशिका संरचना को बदलने के लिए जाते हैं तो यह दृष्टिकोण बंद हो जाता है।
माइक

10
@Baumr लेकिन क्या आप ऐसा कर सकते हैं? मैं निश्चित रूप से उस विधि का उपयोग करने का प्रशंसक / प्रस्तावक हूं, लेकिन एक बड़े ढांचे में मिलता हूं और बड़े रिफ्लेक्टर एक कुख्यात चुनौतीपूर्ण / भयानक कार्य हैं। जब आपने सोचा था कि आप उन सभी को स्विच कर सकते हैं, यहां तक ​​कि एक स्मार्ट आईडीई में भी, अक्सर बार उन्हें याद किया जा सकता है यदि उन्हें स्ट्रिंग्स में कोडित किया जाता है या गतिशील रूप से बनाया जाता है। इसका सबसे बुरा हिस्सा यह है कि आमतौर पर उन याद किए गए संदर्भों को तब तक नहीं पकड़ा जाता है जब तक कि आपका समाधान उत्पादन में वापस नहीं आता ... :(
dudewad

31
@ आप रूट-रिलेटिव URL को 'निरपेक्ष' क्यों कहेंगे ?
törzsmókus

4
@ törzsmókus अच्छा सवाल है। यह मुझे संपादित करने की अनुमति नहीं देता है और वह वर्षों पहले था, इससे पहले कि मैं भी रूट के सापेक्ष आया।
माइक

237

क्या मुझे निरपेक्ष या सापेक्ष URL का उपयोग करना चाहिए?

यदि निरपेक्ष URL द्वारा आप स्कीम (जैसे http / https) और होस्टनाम (जैसे yourdomain.com) सहित URL का मतलब कभी ऐसा नहीं करते (स्थानीय संसाधनों के लिए) क्योंकि यह बनाए रखना और डिबग करना भयानक होगा।

मान लीजिए कि आपने अपने कोड में हर जगह निरपेक्ष URL का उपयोग किया है <img src="http://yourdomain.com/images/example.png">। अब जब आप जा रहे हैं तो क्या होगा:

  • किसी अन्य योजना पर स्विच करें (उदाहरण http -> https)
  • डोमेन नाम स्विच करें (test.yourdomain.com -> yourdomain.com)

पहले उदाहरण में क्या होगा यह है कि आपको पृष्ठ पर असुरक्षित सामग्री के बारे में चेतावनी दी जाएगी। क्योंकि आपके सभी URL http (: //yourdomain.com/images/example.png) का उपयोग करने के लिए हार्डकोड किए गए हैं। और जब आपके पेज को https पर चलाने से ब्राउज़र को उम्मीद है कि जानकारी लीक होने से रोकने के लिए सभी संसाधन https पर लोड होंगे।

दूसरे उदाहरण में जब आपकी साइट को परीक्षण के वातावरण से लाइव किया जाता है तो इसका मतलब होगा कि सभी संसाधन अभी भी आपके लाइव डोमेन के बजाय आपके परीक्षण डोमेन की ओर इशारा कर रहे हैं।

इसलिए अपने प्रश्न का उत्तर देने के लिए कि क्या निरपेक्ष या सापेक्ष URL का उपयोग करना है: हमेशा सापेक्ष URL (स्थानीय संसाधनों के लिए) का उपयोग करें।

विभिन्न यूआरएल के बीच अंतर क्या हैं?

पहले हमें विभिन्न प्रकार के url पर एक नज़र डालनी चाहिए जिनका हम उपयोग कर सकते हैं:

  • http://yourdomain.com/images/example.png
  • //yourdomain.com/images/example.png
  • /images/example.png
  • images/example.png

ये URL सर्वर पर पहुंचने के लिए किन संसाधनों की कोशिश करते हैं?

नीचे दिए गए उदाहरणों में, मुझे लगता है कि वेबसाइट सर्वर पर निम्न स्थान से चल रही है /var/www/mywebsite

http://yourdomain.com/images/example.png

उपरोक्त (निरपेक्ष) URL संसाधन तक पहुँचने का प्रयास करता है /var/www/website/images/example.png। यूआरएल के इस प्रकार के कुछ आप होता है हमेशा ऊपर उल्लिखित कारण के लिए अपनी खुद की वेबसाइट से संसाधनों अनुरोध करने के लिए बचना चाहते हैं। हालाँकि यह अपनी जगह है। उदाहरण के लिए यदि आपके पास एक वेबसाइट है http://yourdomain.comऔर आप http पर बाहरी डोमेन से एक संसाधन का अनुरोध करना चाहते हैं तो आपको इसका उपयोग करना चाहिए। जैसे https://externalsite.com/path/to/image.png

//yourdomain.com/images/example.png

यह URL वर्तमान में उपयोग की गई योजना पर आधारित है और बाहरी संसाधनों (चित्र, जावास्क्रिप्ट आदि) सहित लगभग हमेशा उपयोग किया जाना चाहिए।

इस प्रकार का URL जो करता है, वह उस पृष्ठ की वर्तमान योजना का उपयोग करता है जो उस पर है। इसका मतलब है कि आप पृष्ठ http://yourdomain.comपर हैं और उस पृष्ठ पर एक छवि टैग है <img src="//yourdomain.com/images/example.png">जिस छवि का URL हल करेगा http://yourdomain.com/images/example.png
जब आप पृष्ठ http**s**://yourdomain.comपर होते हैं और उस पृष्ठ पर एक छवि टैग <img src="//yourdomain.com/images/example.png">होता है, तो छवि का URL हल हो जाएगा https://yourdomain.com/images/example.png

जब यह आवश्यक नहीं है, तो यह https पर संसाधनों को लोड करने से रोकता है और स्वचालित रूप से यह सुनिश्चित करता है कि जब यह आवश्यक हो तो संसाधन https पर अनुरोध किया जाता है।

उपरोक्त URL पिछले URL की तरह सर्वर साइड में भी हल होता है:

उपरोक्त (निरपेक्ष) URL संसाधन तक पहुँचने का प्रयास करता है /var/www/website/images/example.png

/images/example.png

स्थानीय संसाधनों के लिए यह उन्हें संदर्भित करने का पसंदीदा तरीका है। यह /var/www/mywebsiteआपकी वेबसाइट के दस्तावेज़ रूट ( ) पर आधारित एक सापेक्ष URL है । इसका मतलब है जब आपके पास <img src="/images/example.png">यह हमेशा के लिए हल होगा /var/www/mywebsite/images/example.png

यदि किसी बिंदु पर आप डोमेन स्विच करने का निर्णय लेते हैं तो यह अभी भी काम करेगा क्योंकि यह सापेक्ष है।

images/example.png

यह भी एक सापेक्ष URL है, हालांकि पिछले वाले की तुलना में थोड़ा अलग है। यह URL वर्तमान पथ के सापेक्ष है। इसका मतलब यह है कि यह उस जगह पर निर्भर करता है जहां आप साइट पर हैं।

उदाहरण के लिए जब आप पृष्ठ पर होते हैं http://yourdomain.comऔर आप इसका उपयोग <img src="images/example.png">करते हैं तो यह सर्वर पर /var/www/mywebsite/images/example.pngअपेक्षित रूप से हल होता है, हालांकि जब आपका पेज पेज पर होता है http://yourdomain.com/some/pathऔर आप सटीक उसी छवि टैग का उपयोग करते हैं तो यह अचानक हल हो जाएगा /var/www/mywebsite/some/path/images/example.png

कब क्या उपयोग करना है?

जब आप बाहरी संसाधनों का अनुरोध करते हैं, तो आप योजना के सापेक्ष URL का उपयोग करना चाहते हैं (जब तक कि आप एक अलग योजना लागू नहीं करना चाहते) और स्थानीय संसाधनों के साथ काम करते समय आप दस्तावेज़ रूट के आधार पर सापेक्ष URL का उपयोग करना चाहते हैं।

एक उदाहरण दस्तावेज:

<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
        <link href='//fonts.googleapis.com/css?family=Lato:300italic,700italic,300,700' rel='stylesheet' type='text/css'>
        <link href="/style/style.css" rel="stylesheet" type="text/css" media="screen"></style>
    </head>
    <body>
        <img src="/images/some/localimage.png" alt="">
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>
    </body>
</html>

कुछ (थोड़े) नकल करते हैं


2
क्या सापेक्ष URL का उपयोग करने की तुलना में निरपेक्ष URL का उपयोग करने से पृष्ठ तेजी से लोड होता है? (किसी भी समय रिश्तेदार पथ को हल करने पर खर्च?)
shasi kanth

2
कोई भी संभावित अंतर इतना कम होगा कि यह ऐसी कोई चीज नहीं है जिसके बारे में आपको चिंता करनी चाहिए, अगर यह औसत दर्जे का है।
PeeHaa

3
Google Jquery को प्रोटोकोल के रूप में शामिल करने का एक उदाहरण: <script src = "// ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" </ script>
shasi kanth

8
यह उत्तर मानता है कि निरपेक्ष URL को गतिशील रूप से उत्पन्न नहीं किया जा रहा है जो उल्लिखित प्रत्येक समस्या को हल करता है।
कोई नहीं

2
J.Money सही है। आधुनिक वेब फ्रेमवर्क में "रिवर्स रूटिंग" की धारणा है जो आपको अपने पृष्ठों में से किसी एक पृष्ठ से दूसरे पृष्ठ पर URLS बनाने की अनुमति देती है (यह आपकी उसी वेबसाइट में किसी अन्य पृष्ठ पर होना चाहिए)। ये आपको एक URL को एक नाम देने की अनुमति देते हैं और फिर URL के बजाय इस नाम का उपयोग करते हैं। इस तरह, यदि आप कभी भी URL बदलना चाहते हैं, तो आप URL को एक जगह बदल सकते हैं, क्योंकि हर जगह आप कभी-कभी उस URL को उसके नाम से संदर्भित करते हैं।
केविन व्हीलर

65

इसे देखें: http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax

foo://username:password@example.com:8042/over/there/index.dtb;type=animal?name=ferret#nose
\ /   \________________/\_________/ \__/            \___/ \_/ \_________/ \_________/ \__/
 |           |               |       |                |    |       |           |       |
 |       userinfo         hostname  port              |    |       parameter query  fragment
 |    \_______________________________/ \_____________|____|____________/
scheme                  |                               | |  |
 |                authority                           |path|
 |                                                    |    |
 |            path                       interpretable as filename
 |   ___________|____________                              |
/ \ /                        \                             |
urn:example:animal:ferret:nose               interpretable as extension

एक पूर्ण यूआरएल में "पथ" भाग से पहले के हिस्से शामिल हैं - दूसरे शब्दों में, इसमें स्कीम ( httpइन http://foo/bar/baz) और होस्टनाम ( fooइन http://foo/bar/baz) (और वैकल्पिक रूप से पोर्ट, यूजरइनफो और पोर्ट) शामिल हैं।

सापेक्ष मूत्र पथ से शुरू होता है।

पूर्ण url हैं, ठीक है, निरपेक्ष: संसाधन का स्थान केवल url को देखते हुए हल किया जा सकता है। एक रिश्तेदार url अपूर्ण अर्थ में है: इसे हल करने के लिए, आपको योजना और होस्टनाम की आवश्यकता है, और ये आमतौर पर वर्तमान संदर्भ से लिए गए हैं। उदाहरण के लिए, एक वेब पेज पर

http://myhost/mypath/myresource1.html

आप ऐसा लिंक डाल सकते हैं

<a href="pages/page1">click me</a>

hrefलिंक की विशेषता में, एक रिश्तेदार url का उपयोग किया जाता है, और यदि इसे क्लिक किया जाता है, तो इसे पालन करने के लिए इसे हल करना होगा। इस मामले में, वर्तमान संदर्भ है

http://myhost/mypath/myresource1.html

इसलिए, स्कीमा, होस्टनाम, और इनमें से प्रमुख पथ लिया और pages/page1उपज के लिए तैयार किया गया है

http://myhost/mypath/pages/page1

यदि लिंक होता:

<a href="/pages/page1">click me</a>

( /url के शुरू में प्रदर्शित होने पर ध्यान दें ) तो इसे हल कर दिया गया होगा

http://myhost/pages/page1

क्योंकि अग्रणी /मेजबान की जड़ को इंगित करता है।

एक webapplication में, मैं आपके ऐप से संबंधित सभी संसाधनों के लिए सापेक्ष url का उपयोग करने की सलाह दूंगा। इस तरह, यदि आप पृष्ठों का स्थान बदलते हैं, तो सब कुछ काम करना जारी रखेगा। कोई भी बाहरी संसाधन (आपके आवेदन के बाहर पूरी तरह से पृष्ठ हो सकते हैं, लेकिन स्थिर सामग्री जो आप एक सामग्री वितरण नेटवर्क के माध्यम से वितरित करते हैं) को हमेशा पूर्ण यूआरएल का उपयोग करने के लिए इंगित किया जाना चाहिए: यदि आपके पास बस उन्हें खोजने का कोई तरीका नहीं है, क्योंकि वे एक अलग सर्वर पर रहते हैं।


9
संबंधित URL को URL पथ से शुरू करने की आवश्यकता नहीं है। //example.com/…, ?foobarऔर #foobarभी सापेक्ष URL हैं और URL पथ से शुरू नहीं होते हैं (ठीक है, क्योंकि ?foobarआप कह सकते हैं कि यह खाली पथ से शुरू होता है)।
गंबू

@Gumbo, -type //example.com/…URL को सापेक्ष कहा जाता है? मेरे लिए यह नया है।
törzsmókus

3
@ törzsmókus RFC 2396 के संदर्भ में : "सापेक्ष URI संदर्भों को निरपेक्ष URI से अलग किया जाता है, क्योंकि वे योजना नाम से शुरू नहीं होते हैं।"
गुम्बो

50

मान लें कि हम एक सबसाइट बना रहे हैं जिसकी फाइलें http://site.ru/shop फ़ोल्डर में हैं ।

1. निरपेक्ष URL

Link to home page
href="http://sites.ru/shop/"

Link to the product page
href="http://sites.ru/shop/t-shirts/t-shirt-life-is-good/"

2. सापेक्ष URL

Link from home page to product page
href="t-shirts/t-shirt-life-is-good/"

Link from product page to home page
href="../../"

हालाँकि सापेक्ष URL निरपेक्ष से कम दिखते हैं, लेकिन पूर्ण URL अधिक पसंद किए जाते हैं, क्योंकि किसी लिंक का उपयोग साइट के किसी भी पृष्ठ पर अपरिवर्तित किया जा सकता है।

इंटरमीडिएट के मामले

हमने दो चरम मामलों पर विचार किया है: "बिल्कुल" निरपेक्ष और "बिल्कुल" सापेक्ष URL। लेकिन इस दुनिया में सब कुछ सापेक्ष है। यह URL पर भी लागू होता है। हर बार जब आप निरपेक्ष URL के बारे में कहते हैं, तो आपको हमेशा किस के सापेक्ष निर्दिष्ट करना चाहिए।

3. प्रोटोकॉल-सापेक्ष URL

Link to home page
href="//sites.ru/shop/"

Link to product page
href="//sites.ru/shop/t-shirts/t-shirt-life-is-good/"

Google ऐसे URL की अनुशंसा करता है। अब, हालांकि, यह आमतौर पर माना जाता है कि http: // और https: // अलग-अलग साइटें हैं।

4. रूट-रिलेटिव URL

यानी डोमेन के रूट फ़ोल्डर के सापेक्ष।

Link to home page
href="/shop/"

Link to product page
href="/shop/t-shirts/t-shirt-life-is-good/"

यह एक अच्छा विकल्प है यदि सभी पृष्ठ एक ही डोमेन के भीतर हैं। जब आप अपनी साइट को किसी अन्य डोमेन पर ले जाते हैं, तो आपको URL में डोमेन नाम का एक सामूहिक प्रतिस्थापन करने की आवश्यकता नहीं होती है।

5. बेस-रिलेटिव URL (होम-पेज-रिलेटिव)

टैग <आधार> आधार URL को निर्दिष्ट करता है, जो स्वचालित रूप से सभी रिश्तेदार लिंक और एंकर में जोड़ा जाता है। आधार टैग निरपेक्ष लिंक को प्रभावित नहीं करता है। बेस URL के रूप में हम होम पेज निर्दिष्ट करेंगे: <base href = "http://sites.ru/shop/">।

Link to home page
href=""

Link to product page
href="t-shirts/t-shirt-life-is-good/"

अब आप अपनी साइट को न केवल किसी भी डोमेन, बल्कि किसी भी सबफ़ोल्डर में स्थानांतरित कर सकते हैं। बस इस बात का ध्यान रखें कि, हालांकि URL रिश्तेदार की तरह दिखते हैं, वास्तव में वे निरपेक्ष हैं। खासतौर पर एंकर पर ध्यान दें। वर्तमान पृष्ठ के भीतर नेविगेट करने के लिए हमें href = "टी-शर्ट / टी-शर्ट-लाइफ-इस-गुड / # कमेंट्स" लिखना होगा, न कि href = "# कमेंट्स"। बाद वाला मुख पृष्ठ पर फेंक दिया जाएगा।

निष्कर्ष

आंतरिक लिंक के लिए मैं आधार-सापेक्ष URL (5) का उपयोग करता हूं। बाहरी लिंक और समाचारपत्रिका के लिए मैं निरपेक्ष URL (1) का उपयोग करता हूं।


1
बहुत बढ़िया जवाब। बहुत बुरा यह लोगों को इसे देखने के लिए पृष्ठ पर बहुत कम है। अन्य उत्तरों पर बहुत सारी टिप्पणियों का जवाब देता है।
ऑलिगॉफ्रेन

24

वास्तव में तीन प्रकार हैं जिन पर स्पष्ट रूप से चर्चा की जानी चाहिए। हालांकि अभ्यास में URL को निचले स्तर पर संभाला जा सकता है और मैं यह कहना चाहूंगा कि डेवलपर्स हाथ से एक भी URL लिखे बिना अपनी पूरी ज़िंदगी गुज़ार सकते हैं।

पूर्ण

निरपेक्ष URL आपके कोड को प्रोटोकॉल और डोमेन से जोड़ते हैं। इसे डायनामिक URL से दूर किया जा सकता है।

<a href=“https://dev.example.com/a.html?q=”>https://dev.example.com/a.html?q=</a>

पूर्ण पेशेवरों:

  1. नियंत्रण - उपडोमेन और प्रोटोकॉल को नियंत्रित किया जा सकता है। एक अस्पष्ट उपडोमेन के माध्यम से प्रवेश करने वाले लोगों को उचित उपडोमेन में अंतिम संस्कार किया जाएगा। आप उपयुक्त के रूप में सुरक्षित और गैर-सुरक्षित के बीच आगे और पीछे आशा कर सकते हैं।

  2. विन्यास योग्य - डेवलपर्स को निरपेक्ष रहना पसंद है। निरपेक्ष URL का उपयोग करते समय आप स्वच्छ एल्गोरिदम डिज़ाइन कर सकते हैं। URL को विन्यास योग्य बनाया जा सकता है ताकि किसी एकल कॉन्फ़िगरेशन फ़ाइल में एक परिवर्तन के साथ URL को साइट-व्यापी अपडेट किया जा सके।

  3. Clairvoyance - आप अपनी साइट को स्क्रैप करने वाले लोगों को खोज सकते हैं या शायद कुछ अतिरिक्त बाहरी लिंक उठा सकते हैं।


रूट रिलेटिव

रूट रिलेटिव URL आपके कोड को बेस url से टाई करते हैं। इसे डायनामिक URL और / या बेस टैग से दूर किया जा सकता है ।

<a href=“/index.php?q=”>.example.com/index.php?q=</a>

जड़ सापेक्ष पेशेवरों:

  1. कॉन्फ़िगर करने योग्य - आधार टैग उन्हें किसी भी रूट के सापेक्ष बनाता है जिसे आप स्विचिंग डोमेन बनाना और टेम्प्लेट को लागू करना आसान बनाते हैं।

सापेक्ष

रिलेटिव URL आपके कोड को डायरेक्टरी स्ट्रक्चर में बाँध देते हैं। इससे उबरने का कोई उपाय नहीं है। रिलेटिव URL केवल ट्रैवेलिंग डायरेक्टरी के लिए या मेनियल टास्क के लिए शॉर्टकट के रूप में फाइल सिस्टम में उपयोगी होते हैं।

<a href=“index.php?q=”>index.php?q=</a>
<link src=“../.././../css/default.css” />

रिश्तेदार विपक्ष:

  1. CONFUSING - कितने डॉट है? कितने फ़ोल्डर है? फाइल कहां है? यह काम क्यों नहीं कर रहा है?

  2. रखरखाव - यदि कोई फ़ाइल गलती से संसाधनों को लोड करना छोड़ देती है, तो लिंक उपयोगकर्ता को गलत पृष्ठों पर भेजते हैं, प्रपत्र डेटा गलत पृष्ठ पर भेजा जा सकता है। यदि कोई फ़ाइल लोड होने के लिए जा रहे सभी संसाधनों को ले जाने की आवश्यकता है और सभी लिंक जो गलत होने जा रहे हैं, उन्हें अपडेट करने की आवश्यकता है।

  3. वेब नहीं है - जब वेबपेज और अधिक जटिल हो जाते हैं और कई पृष्ठों पर दृश्य पुन: उपयोग होने लगते हैं, तो संबंधित लिंक उस फ़ाइल के सापेक्ष होंगे जो उन्हें शामिल किया गया था। यदि आपके पास HTML का एक नेविगेशन स्निपेट है जो कि हर पृष्ठ पर आने वाला है तो बहुत सारे अलग-अलग स्थानों के सापेक्ष होगा। जब वे टेम्पलेट बनाना शुरू करते हैं तो सबसे पहले लोगों को पता चलता है कि उन्हें URL को प्रबंधित करने के तरीके की आवश्यकता है।

  4. कम्प्यूटेड - वे आपके ब्राउज़र द्वारा कार्यान्वित किए जाते हैं (उम्मीद है कि RFC के अनुसार)। RFC3986 में अध्याय 5 देखें ।

  5. उफ़! - त्रुटियों या टाइपोस के परिणामस्वरूप मकड़ी के जाल हो सकते हैं।


मार्गों का विकास

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

<a href="<?=Route::url('named_url', array('first' => 'my', 'last' => 'whacky'))?>">
    http://dev.example.com/index.php/my:whacky:url
</a>

मार्गों पेशेवरों:

  1. संपूर्ण उरोजों के सभी फायदे।
  2. URL में किसी भी वर्ण का उपयोग।
  3. अधिक नियंत्रण (एसईओ के लिए अच्छा)।
  4. एल्गोरिथ्म को URL बनाने की क्षमता। यह URLs को कॉन्फ़िगर करने योग्य बनाता है। URL को बदलना एक एकल फ़ाइल में एक एकल परिवर्तन है।
  5. 404 नहीं मिला के लिए कोई ज़रूरत नहीं है। फ़ॉलबैक मार्ग साइट मानचित्र या त्रुटि पृष्ठ प्रदर्शित कर सकते हैं।
  6. एप्लिकेशन फ़ाइलों के लिए अप्रत्यक्ष पहुंच की सुविधाजनक सुरक्षा। गार्ड बयान यह सुनिश्चित कर सकते हैं कि हर कोई उचित चैनलों के माध्यम से आ रहा है।
  7. एमवीसी दृष्टिकोण में व्यावहारिकता।

मेरा स्वीकार कर लेना

अधिकांश लोग अपनी परियोजनाओं में तीनों रूपों का किसी न किसी तरह से उपयोग करेंगे। कुंजी उन्हें समझना है और कार्य के लिए सबसे उपयुक्त एक का चयन करना है।


आपको प्रोटोकॉल-सापेक्ष URL याद आ रहे हैं, जो पूरी तरह से निरपेक्ष URL से कड़ाई से बेहतर हैं। स्कीम को अपग्रेड करते समय निरपेक्ष URL परेशान होते हैं (HTTPS, ज्यादातर), रिश्तेदार URL इसे ठीक करते हैं।
तोबू

@ टोबू बस HTTPS पर सब कुछ परोसें।
कोई भी

साइड नोट: ऐसा लगता है कि आपने अपने अधिकांश कोड उदाहरणों में टाइपोग्राफिक उद्धरणों का उपयोग किया है। आप इसे ठीक करना चाह सकते हैं।
डोमसन

और किस प्रकार का यूआरएल पहले डॉट के साथ है? जैसे "./index.html"
Narvalex

क्या आप Clairvoyance पर थोड़ा विस्तार कर सकते हैं ? यदि आप "रूट रिलेटिव" URL का उपयोग कर रहे थे, तो आप लोगों को अपनी साइट को स्क्रैप करते हुए क्यों नहीं देख पाएंगे?
लवथेनकेगुन

6

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

स्टैकओवरफ़्लो क्या कर रहा है (ctrl + U को फ़ायरफ़ॉक्स में देखें) पर एक नज़र डालें:

<a href="/users/recent/90691"> // Link to an internal element

कुछ मामलों में वे पूरी तरह से उपयोग करते हैं:

<link rel="stylesheet" href="http://sstatic.net/so/all.css?v=5934">

... लेकिन यह केवल गति में सुधार करने के लिए सबसे अच्छा अभ्यास है। आपके मामले में, ऐसा नहीं लगता है कि आप ऐसा कुछ भी कर रहे हैं, इसलिए मुझे इसकी चिंता नहीं होगी।


6

मैं यहाँ बहुमत से असहमत होने जा रहा हूँ।

मुझे लगता है कि रिश्तेदार URL योजना "ठीक" है जब आप जल्दी से कुछ उठना और चलाना चाहते हैं और बॉक्स के बाहर नहीं सोचते हैं, खासकर यदि आपकी परियोजना कुछ डेवलपर्स (या सिर्फ अपने) के साथ छोटी है।

हालांकि, एक बार जब आप बड़े, वसायुक्त सिस्टम पर काम करना शुरू करते हैं, जहां आप हर समय डोमेन और प्रोटोकॉल स्विच करते हैं, तो मेरा मानना ​​है कि अधिक सुरुचिपूर्ण दृष्टिकोण क्रम में है।

जब आप सार में पूर्ण और सापेक्ष URL की तुलना करते हैं, तो निरपेक्ष जीतता है। क्यों? क्योंकि यह कभी नहीं टूटेगा। कभी। एक निरपेक्ष URL बिल्कुल वैसा ही है जैसा वह कहता है। पकड़ तब होती है जब आपको अपने पूर्ण URL को MAINTAIN करना होता है।

पूर्ण URL लिंकिंग के लिए कमजोर दृष्टिकोण वास्तव में पूरे URL को हार्ड कोडिंग है। एक महान विचार नहीं है, और शायद इस बात का अपराधी कि लोग उन्हें बनाए रखने के लिए खतरनाक / बुराई / कष्टप्रद के रूप में क्यों देखते हैं। एक बेहतर तरीका यह है कि आप खुद को URL जनरेटर का उपयोग करने के लिए आसान लिखें। ये लिखना आसान है, और अविश्वसनीय रूप से शक्तिशाली हो सकता है- स्वचालित रूप से आपके प्रोटोकॉल का पता लगा सकता है, आसानी से कॉन्फ़िगर कर सकता है (शाब्दिक रूप से संपूर्ण ऐप के लिए एक बार url सेट करें), आदि, और यह आपके डोमेन को स्वयं ही इंजेक्ट करता है। उस के बारे में अच्छी बात: आप रिश्तेदार URL का उपयोग करके कोडिंग पर जाते हैं, और समय के साथ आवेदन आपके URL को मक्खी पर पूर्ण निरपेक्षता के रूप में सम्मिलित करता है। बहुत बढ़िया।

यह देखते हुए कि व्यावहारिक रूप से सभी आधुनिक साइटें किसी प्रकार के गतिशील बैक-एंड का उपयोग करती हैं, यह कहा जाता है कि इस तरह से ऐसा करना साइट का सबसे अच्छा हित है। निरपेक्ष URL अधिक से अधिक सिर्फ आपको यह निश्चित करते हैं कि वे कहां तक ​​इशारा करते हैं- वे SEO प्रदर्शन में सुधार भी कर सकते हैं।

मैं जोड़ सकता हूं कि पूर्ण URL किसी भी तरह पृष्ठ के लोड समय को बदलने के लिए तर्क एक मिथक है। यदि आपका डोमेन कुछ बाइट्स से अधिक वजन का है और आप 1980 के दशक में डायलअप मोडेम पर हैं, तो सुनिश्चित करें। लेकिन अभी ऐसा नहीं है। https://stackoverflow.com/ 25 बाइट्स है, जबकि "topbar-sprite.png" फ़ाइल जो वे साइट के नौसेना क्षेत्र के लिए उपयोग करते हैं उनका वजन 9+ kb पर है। इसका अर्थ है कि अतिरिक्त URL डेटा स्प्राइट फ़ाइल की तुलना में लोड किए गए डेटा का .2% है, और उस फ़ाइल को बड़ा प्रदर्शन हिट भी नहीं माना जाता है।

वह बड़ी, अडॉप्टिफ़ाइड, पूर्ण-पृष्ठ पृष्ठभूमि छवि आपके लोड समय को धीमा करने की अधिक संभावना है।

रिश्तेदार URL का उपयोग क्यों नहीं किया जाना चाहिए, इस बारे में एक दिलचस्प पोस्ट यहाँ है: http://yoast.com/relative-urls-issues/

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

या शायद एक डेवलपर एक सूचक को स्विच करना भूल गया और अचानक Google ने आपके पूरे परीक्षण वातावरण को अनुक्रमित किया। वूप्स- डुप्लिकेट सामग्री (एसईओ के लिए खराब!)।

निरपेक्ष खतरनाक हो सकते हैं, लेकिन जब सही तरीके से उपयोग किया जाता है और इस तरह से जो आपके निर्माण को नहीं तोड़ सकते हैं तो वे अधिक विश्वसनीय साबित होते हैं। ऊपर दिए गए लेख को देखें, जो कारणों का एक गुच्छा देता है कि क्यों Wordpress url जनरेटर सुपर भयानक है।

:)


1
जब आप निरपेक्ष URL कहते हैं तो क्या आपका मतलब पूर्ण यूआरएल या /आधार पथ से लिंक करने के लिए है? यानी /products/wallets/thing.htmlके रूप में करने का विरोध किया thing.htmlके रूप में करने का विरोध कियाhttp://www.myshop.com/products/wallets/thing.html
ब्राडली बाढ़

एक "/" के साथ प्रस्तुत करना हमेशा डोमेन रूट के सापेक्ष होगा, मुझे विश्वास है। इसलिए यदि आपका डोमेन "www.example.com" है, तो "www.imample1.jpg" के रूप में कोडित किसी भी संदर्भ को "www.example.com/image1.jpg" के रूप में व्याख्या किया जाएगा। प्रमुख स्लैश के बिना आइटम अनुरोध रूट के सापेक्ष व्याख्या किए जाते हैं। जब मैं "पूर्ण URL" कहता हूं तो मेरा मतलब पूरी तरह से योग्य यूआरएल है। मैं इंटरनेट के माध्यम से MSDN लिंक भेजने के लिए उकसाता हूं
dudewad

यह वर्तमान सबसे अच्छा अभ्यास है, हालांकि कई लोगों को अभी तक इसका एहसास नहीं हुआ है। मुझे रूट से प्यार है, जैसे कि कोहना में जहां आप echo Route::url('route_name')HTTPS को बनाने के लिए विकल्प के साथ साइट यूआरएल और रूट की जानकारी का उपयोग करके एक निरपेक्ष URL का उपयोग कर सकते हैं ।
कोई नहीं

मुझे लगता है कि डायलअप मोडेम को 80 के दशक में वापस नहीं छोड़ा गया था। अब बहुत सारे लोग हैं जिनके पास डायलअप या सुपर ओवरप्राइज़ के अलावा कोई विकल्प नहीं है बहुत सीमित उपग्रह इंटरनेट ... और अगर आप गरीब हैं, तो फ्री डायलअप से बेहतर क्या हो सकता है? यह वास्तव में मुझे डेवलपर्स को देखने के लिए परेशान करता है जो मानते हैं कि डायलअप अब मौजूद नहीं है। डायलअप पर मेरे बैंक की वेबसाइट पर लॉगइन करने में 5-10 मिनट (!!!) लग सकते हैं ... पेपाल, अमेजन और ईबे ज्यादा बेहतर नहीं हैं। एग केव (एक आभासी पालतू साइट) और फेसबुक सिर्फ सादे डायलअप पर काम नहीं करते हैं। यह बहुत सारे लोगों को प्रभावित करता है जो ग्रामीण क्षेत्रों में रहते हैं।
कैट कॉक्स

ठीक है, हाँ, जबकि डायलअप पर कुछ लोग हैं, उपयोगकर्ताओं के विशाल (विशाल) अधिकांश डायलअप पर नहीं हैं । जनसांख्यिकीय के साथ भी बहुत कुछ करना है। यदि आप मेगा-विशाल अल्ट्रा-परफॉर्मेंट परिणामों के लिए शूटिंग कर रहे हैं, तो अपने URL से अपने डोमेन को क्लिप करना शुरू करें। लेकिन उस टिप्पणी का मुख्य बिंदु यह रेखांकित करना था कि प्रदर्शन आम तौर पर अन्य क्षेत्रों में पाया जाता है - आप एक छवि को अनुकूलित करके url बाइट्स में खो गए सभी स्थानांतरण समय प्राप्त कर सकते हैं । लेकिन, यदि आपके 20% या अधिक उपयोगकर्ता डायलअप पर हैं, तो मुझे लगता है कि यह महत्वपूर्ण है। 2015 में, और सभी व्यावहारिक उद्देश्यों के लिए, यह सिर्फ मामला नहीं है।
०४ पर दुवेद

4

ज्यादातर उदाहरणों में रिश्तेदार यूआरएल जाने का तरीका है, वे स्वभाव से पोर्टेबल हैं, जिसका अर्थ है कि यदि आप अपनी साइट को उठाना चाहते थे और किसी ऐसे व्यक्ति को डालते हैं जहां यह तुरंत काम करेगा, तो संभवतः डिबगिंग के घंटों को कम कर देगा।

निरपेक्ष बनाम सापेक्ष URL पर एक बहुत अच्छा लेख है , इसे देखें।


4

एक URL जिसे URL योजना और योजना विशिष्ट भाग (के साथ शुरू होता है http://, https://, ftp://, आदि) एक पूर्ण यूआरएल है।

कोई भी अन्य URL एक सापेक्ष URL है और उसे आधार URL की आवश्यकता होती है, सापेक्ष URL से हल किया जाता है (और इस तरह निर्भर करता है) संसाधन का URL है जिसे संदर्भ में उपयोग किया जाता है यदि अन्यथा घोषित नहीं किया गया है।

रिश्तेदार URL को हल करने के उदाहरणों के लिए RFC 2396 - परिशिष्ट C पर एक नज़र डालें ।


3

मान लीजिए कि आपके पास एक साइट है www.yourserver.com। वेब दस्तावेजों के लिए रूट डायरेक्टरी में आपके पास एक चित्र उप-निर्देशन है और उसमें आपके पास myimage.jpg है।

एक पूर्ण URL उदाहरण के लिए दस्तावेज़ के सटीक स्थान को परिभाषित करता है:

http://www.yourserver.com/images/myimage.jpg

एक रिश्तेदार URL वर्तमान निर्देशिका के सापेक्ष स्थान को परिभाषित करता है , उदाहरण के लिए, दिए गए मूल वेब निर्देशिका में आप अपनी छवि में हैं:

images/myimage.jpg

(उस रूट डायरेक्टरी के सापेक्ष)

आपको हमेशा जहां संभव हो, सापेक्ष URL का उपयोग करना चाहिए। यदि आप साइट को www.anotherserver.com पर ले जाते हैं, तो आपको उन सभी पूर्ण URL को अपडेट करना होगा जो www.yourserver.com पर इंगित कर रहे थे, रिश्तेदार केवल उसी तरह काम करते रहेंगे।


0

प्रत्येक प्रणाली जो सापेक्ष यूआरआई संकल्प का समर्थन करती है, दोनों रिश्तेदार और पूर्ण यूआरआई एक ही लक्ष्य की सेवा करते हैं: संदर्भित। और उनका उपयोग परस्पर किया जा सकता है। इसलिए आप प्रत्येक मामले में अलग तरीके से निर्णय ले सकते हैं । तकनीकी रूप से, वे एक ही संदर्भ प्रदान करते हैं ।

सटीक होने के लिए, प्रत्येक रिश्तेदार URI के साथ पहले से ही एक पूर्ण URI है। और वह आधार-यूआरआई है जिसके सापेक्ष यूआरआई के खिलाफ हल किया जाता है। तो एक सापेक्ष URI वास्तव में निरपेक्ष URI के शीर्ष पर एक विशेषता है।

और यही कारण है कि सापेक्ष यूआरआई के साथ आप अकेले पूर्ण यूआरआई के साथ अधिक कर सकते हैं - यह विशेष रूप से स्थिर वेबसाइटों के लिए महत्वपूर्ण है जो अन्यथा पूर्ण यूआरआई की तुलना में बनाए रखने के लिए लचीले नहीं हो सकते हैं।

सापेक्ष यूआरआई संकल्प के इन सकारात्मक प्रभावों का उपयोग गतिशील वेब-अनुप्रयोग विकास के लिए भी किया जा सकता है। अनफिलिबिलिटी निरपेक्ष URIs का परिचय एक गतिशील वातावरण में भी सामना करना आसान होता है, इसलिए कुछ डेवलपर्स के लिए जो URI रिज़ॉल्यूशन के बारे में अनिश्चित हैं और इसे ठीक से लागू करने और इसे कैसे प्रबंधित करें (यह हमेशा आसान नहीं है) अक्सर निरपेक्षता का उपयोग करने का विकल्प चुनते हैं एक वेबसाइट के एक गतिशील हिस्से में यूआरआई क्योंकि वे अन्य डायनेमिक सुविधाओं (जैसे यूआरआई उपसर्ग युक्त कॉन्फ़िगरेशन चर) का परिचय दे सकते हैं ताकि अनन्तता के आसपास काम कर सकें।

तो पूर्ण यूआरआई का उपयोग करने में क्या लाभ है? तकनीकी रूप से वहाँ नहीं है, लेकिन एक मैं कहूंगा: रिश्तेदार URI अधिक जटिल हैं क्योंकि उन्हें तथाकथित आधार-URI के खिलाफ हल करने की आवश्यकता है। यहां तक ​​कि संकल्प को वर्षों से सख्ती से परिभाषित किया जाता है, आप उस क्लाइंट पर चल सकते हैं जिसमें यूआरआई रिज़ॉल्यूशन की गलती है। जैसे कि पूर्ण यूआरआई को किसी भी रिज़ॉल्यूशन की आवश्यकता नहीं होती है, निरपेक्ष यूआरआई का उपयोग करने से रिश्तेदार यूआरआई रिज़ॉल्यूशन के साथ दोषपूर्ण क्लाइंट व्यवहार में चलने का कोई जोखिम नहीं है। तो वास्तव में यह कितना उच्च जोखिम है? वैसे, यह बहुत दुर्लभ है। मैं केवल एक इंटरनेट ब्राउजर के बारे में जानता हूं, जो सापेक्ष यूआरआई संकल्प के साथ एक मुद्दा था। और वह आम तौर पर केवल एक बहुत ही अस्पष्ट (अस्पष्ट) मामले में नहीं था।

HTTP क्लाइंट (ब्राउज़र) के आगे यह हाइपरटेक्स्ट दस्तावेज़ों या कोड के लेखक के लिए शायद अधिक जटिल है। यहां पूर्ण यूआरआई का लाभ है कि यह परीक्षण करना आसान है, जैसा कि आप बस इसे दर्ज कर सकते हैं-जैसा कि आपके ब्राउज़र एड्रेस बार में है। हालाँकि, अगर यह सिर्फ आपका एक घंटे का काम नहीं है, तो आपको वास्तव में निरपेक्ष और सापेक्ष यूआरआई हैंडलिंग को समझने के लिए सबसे अधिक लाभ होता है ताकि आप वास्तव में रिश्तेदार लिंकिंग के लाभों का लाभ उठा सकें।


-4

मैं उसी साइट के बिट्स को उसी साइट के अन्य बिट्स की ओर इंगित करने के लिए संबंधित URL की दिल से सिफारिश करूंगा।

यह मत भूलो कि HTTPS में परिवर्तन - भले ही एक ही साइट में - एक निरपेक्ष URL की आवश्यकता हो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.