वर्डप्रेस में सापेक्ष URL


115

मैंने हमेशा यह पाया है कि वर्डप्रेस में निराशा होती है कि इमेज, फाइल, लिंक इत्यादि वर्डप्रेस में रिश्तेदार URL के बजाय एक निरपेक्ष यूआरएल के साथ डाले जाते हैं। डोमेन नाम स्विच करने, http और https आदि के बीच परिवर्तन करने के लिए एक सापेक्ष url बहुत अधिक सुविधाजनक है। आज मैंने पाया कि यदि आप WP_CONTENT_URL को किसी रिश्तेदार url के साथ परिभाषित करते हैं, तो जब आप फ़ाइलों में पोस्ट डालते हैं, तो वे पूर्ण url के बजाय src के लिए सापेक्ष url का उपयोग करते हैं। । बस मैं हमेशा क्या चाहता था! लेकिन आधिकारिक वर्डप्रेस प्रलेखन कहता है कि आपको WP_CONTENT_URL को परिभाषित करने पर पूर्ण URI का उपयोग करना चाहिए ।

वर्डप्रेस कोडेक्स कहता है :

इस निर्देशिका के पूर्ण URI (कोई अनुगामी स्लैश) के लिए WP_CONTENT_URL सेट करें , उदा

define( 'WP_CONTENT_URL', 'http://example/blog/wp-content');

जब मैं किसी रिश्तेदार URL का उपयोग करता हूं, तो सब कुछ ठीक लगता है

define( 'WP_CONTENT_URL', '/my-content-folder');

लेकिन क्या एक रिश्तेदार यूआरआई का उपयोग करने में कुछ समस्या है? मैं सिर्फ यह सोच रहा हूं कि वर्डप्रेस के लिए एक कारण होना चाहिए कि इसे पूर्ण यूआरआई के साथ परिभाषित किया जाना चाहिए।


3
मुझे लगता है कि इसका उत्तर WP कोड में सभी उपयोगों का ऑडिट करने के लिए है और आप जिस कोड का उपयोग कर रहे हैं, उनमें से कोई भी यह सुनिश्चित करने के लिए उपयोग नहीं कर रहा है कि यह पूर्ण URL है जब यह नहीं है, लेकिन मैं किसी भी कारण के बारे में नहीं सोच सकता यह मेरे सिर के ऊपर से ठीक नहीं होगा।
रूप

2
इस प्लगइन की कोशिश करो wordpress.org/plugins/relative-url या इसे पढ़ने से आपको deluxeblogtips.com/2012/06/relative-urls.html
krishna

5
@ कृष्ण: अगर हमें सिर्फ wp-config में सापेक्ष URL दर्ज करना है तो हमें प्लगइन की आवश्यकता क्यों होगी? प्रश्न का बिंदु यह पता लगाना है कि क्या wp-config में सापेक्ष URL का उपयोग करने से समस्या हो सकती है।
अदानुरुरन

36
मुझे रोना है जब मुझे वर्डप्रेस को छूना है।
टोनी क्रोनिन

6
@TonyCronin खुश रहो यह ड्रुपल नहीं है।
मोटरबाइ

जवाबों:


75

मुझे लगता है कि यह एक ऐसा प्रश्न है जिसका केवल एक कोर डेवलपर ही जवाब दे सकता है। मैंने शोध किया है और पाया है कि कोर टिकट # 17048: ब्राउज़र को दिए गए URL रूट-रिलेटिव होने चाहिए । जहां हम एंड्रयू कोरसिन, लीड कोर डेवलपर द्वारा बताए गए कारणों को पा सकते हैं। वह इस [wp-hackers] धागे से भी जुड़ता है । उन दोनों लिंक पर, ये महत्वपूर्ण उद्धरण हैं कि WP सापेक्ष URL का उपयोग क्यों नहीं करता है:

कोर टिकट:

  • रूट-सापेक्ष URL वास्तव में उचित नहीं हैं। /path/वर्डप्रेस नहीं हो सकता है, यह इंस्टॉल के बाहर हो सकता है। तो वास्तव में यह एक निरपेक्ष URL से बहुत अलग नहीं है।

  • किसी भी सापेक्ष URL को स्थापित किए जाने पर परिवर्तनों को निष्पादित करने में काफी अधिक कठिन हो जाता है। अधिकांश स्थितियों में खोज-प्रतिस्थापित आवश्यक होने जा रहा है, और निरपेक्ष URL होने के कारण उन कारणों से अधिक पोर्टेबल है।

  • कई अन्य स्थानों पर निरपेक्ष URL की आवश्यकता होती है। सशर्त रूप से इन्हें जोड़ने की आवश्यकता प्रसंस्करण के साथ-साथ संभावित बग (और प्लगइन्स के साथ असंगतता) को शुरू करने की होगी।

[wp-hackers] धागा

  • क्या, मैं निश्चित नहीं हूं, जैसा कि वर्डप्रेस अक्सर एक उपनिर्देशिका में होता है, जिसका अर्थ है कि हमें हमेशा सामग्री को संसाधित करने की आवश्यकता होगी और फिर शेष पथ में जोड़ना होगा। यह ओवरहेड का परिचय देता है।

  • ध्यान रखें कि अग्रणी स्लैश के साथ और उसके बिना दो प्रकार के सापेक्ष URL हैं। दोनों के पास ऐसे कार्य हैं जो इसे ठीक से लागू करना असंभव बनाते हैं।

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


और, एक व्यक्तिगत नोट पर, एक बार से अधिक मैंने थीम और प्लगइन्स को खराब कोडित किया है जो कि WP_CONTENT_URLपरिभाषित होने पर बस टूट जाता है।
वे नहीं जानते कि यह सेट किया जा सकता है और यह माना जाता है कि यह सच है: WP.URL / wp-content / WhatEver , और यह हमेशा ऐसा नहीं होता है। और रास्ते में कुछ टूट जाएगा।


प्लगइन रिलेटिव URL ( edse के उत्तर में जुड़ा हुआ है ), फ़ंक्शन को एक्शन हुक में फ़िल्टर कीwp_make_link_relative एक श्रृंखलाtemplate_redirect में लागू करता है । यह काफी सरल कोड है और एक अच्छा विकल्प लगता है।


14
अच्छी जानकारी। मैं हमेशा रूट-रिलेटिव रास्तों का उपयोग करता हूं ताकि मैं dev.mysite.com -> qa.mysite.com -> www.mysite.com या यहां तक ​​कि www.anothersite.com पर भी कोई समस्या न हो। यह दुर्भाग्यपूर्ण है कि WP को दिमाग में नहीं रखा गया। चूंकि सेट WP_CONTENT_URLकरने के लिए (भले ही यह अनुमति देता है) रिश्तेदार यूआरएल सेट करने का इरादा नहीं लगता है, प्लगइन सबसे अच्छा विकल्प की तरह लगता है। क्या एक परीक्षण का मामला है जहां सेटिंग करते समय एक प्लगइन टूट जाता है WP_CONTENT_URLलेकिन प्लगइन का उपयोग करते समय ठीक काम करता है?
जस्टिन

2
सापेक्ष पथ कभी भी शुरू नहीं होते हैं / और सापेक्ष यूआरआई (अंदर उपयोग के लिए <a>) कभी भी शुरू नहीं होते हैं http://
ट्यूलेंस कोर्डोवा

13
Wordpress कभी भी उचित वेबसाइटों के लिए नहीं था, यह हमेशा एक त्वरित हैक था, हैकर्स द्वारा लिखा गया था (जो यहां के उद्धरणों से स्पष्ट रूप से) बॉक्स के बाहर सोचा या देखा नहीं गया है। एक वेबसाइट को स्थानांतरित करने का एकमात्र तरीका यह है कि क्या यह सही ढंग से रिश्तेदार और / या रूट रिश्तेदार URL का उपयोग करता है। निरपेक्ष URL इसे पूरी तरह से रोकते हैं।
हक

8
मैंने ऐसी साइटें बनाई हैं जो उप-डोमेन, रूट या सब फ़ोल्डर में रहने के लिए सेटअप की जा सकती हैं। यह बहुत कठिन नहीं है। मुझे ऐसा लगता है कि मूल रूप से कारण कह रहे हैं "हमने इसे बहुत पहले बनाया था और यह बदलाव बहुत हद तक टूट जाएगा इसलिए हम इसे ठीक नहीं कर रहे हैं।"
डैनी वी।

3
अभी भी लगता है कि डेवलपर्स कारणों में से कोई भी मान्य नहीं हैं। हार्ड कोडित url में एक रिश्तेदार के रूप में एक ही मुद्दे हैं, यह सिर्फ एक और बहुत बुरा अभ्यास है मूल डेवलपर्स ने अपनी 'बुरी आदतों' टूलकिट में है ... उन्हें वर्डप्रेस में बहुत सारे हैं जो इसे हटाने के लिए कई बार कांटा गया है ये मुद्दे।
दाऊदी

15
<?php wp_make_link_relative( $link ) ?>

पूर्ण URL पथ को सापेक्ष पथ में कनवर्ट करें।

Http या https प्रोटोकॉल और डोमेन को हटाता है। शुरुआत में रास्ता '/' रखता है, इसलिए यह एक सच्चा रिश्तेदार लिंक नहीं है, लेकिन वेब रूट बेस से।

संदर्भ: वर्डप्रेस कोडेक्स


और आप उस php स्निपेट को कहाँ छोड़ते हैं?
एडवर्ड

6

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

जब मैं परीक्षण सर्वर पर काम कर रहा होता हूं, तो मैंने एक बार रिश्तेदार रास्तों के लिए इस प्लगइन का उपयोग किया है:

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


5
एक प्लगइन भी आवश्यक क्यों होगा अगर यह सब wp-config फ़ाइल में एक स्थिर कॉन्फ़िगर करने के लिए है? जब तक यह WP_CONTENT_URLरिश्तेदार बनाने की एक विशेष खराबी से बचने के लिए एक समाधान प्रदान नहीं करता है और किसी भी नुकसान के साथ आगे नहीं बढ़ता है। मैं जानना चाहता हूं कि क्या वास्तव में WP_CONTENT_URLरिश्तेदार बनाने के साथ एक ज्ञात नुकसान है ।
अदानुरुरन

1
एक अग्रेषित स्लैश /wp-content/some-file.jpgसे शुरू होने वाला URL एक निरपेक्ष पथ है जो सापेक्ष पथ नहीं है। कोई संभव भ्रम नहीं है। यह निरपेक्ष URL में प्रोटोकॉल और डोमेन नाम का समावेश है जो वर्डप्रेस को औचित्य के बिना अप्राप्य बनाता है। रहने के लिए मंचन करने के लिए देव से एक WP साइट तैनात करने के लिए मुझे एक डेटाबेस डंप में डोमेन नाम पर एक खोजने और बदलने की स्क्रिप्ट को चलाना होगा। मुझे लगता है कि परेशानी यह है कि यह उत्पादन में संपादन सामग्री के लिए डिज़ाइन किया गया है जो ब्लॉगों के लिए काम करता है (जो कि इसके लिए बनाया गया है) लेकिन कई वाणिज्यिक वेबसाइटों के लिए नहीं।
Ade

1
कैसा है dude.com/bob/jane vs / bob / jane भ्रमित करना? #serious #badults
दाविस

1
@ चलो, कृपया अपना होमवर्क रिश्तेदार रास्तों पर करें। आप /wp-content/some-file.jpgएक गैर-कानूनी रास्ते के बारे में गलत हैं । भविष्य में आपकी टिप्पणी पढ़ने वाले अन्य लोगों के लिए, कृपया ध्यान दें कि एक वेब सापेक्ष पथ एक पथ है जिसमें प्रोटोकॉल और डोमेन को पथ से बाहर रखा गया है। इस प्रकार, /wp-content/some-file.jpgऔर wp-content/some-file.jpgदोनों रिश्तेदार हैं, /पहले उदाहरण में अग्रणी , खाता धारक या सर्वर की सुलभ रूट निर्देशिका को संदर्भित करने के उद्देश्य से।
साथियों

1
@ ठीक है, मुझे "निरपेक्ष पथ" के विपरीत "पूर्ण पथ" शब्द का उपयोग करते हुए कई स्रोत (एसओ पर कुछ) मिले। इसे "रूट रिलेटिव" पथ के रूप में भी जाना जाता है। हालांकि शब्दार्थ और शब्दावली निश्चित रूप से महत्वपूर्ण हैं, फिर भी यह बिंदु खड़ा है कि वे मौलिक रूप से एक दूसरे से भिन्न हैं। मूल के सापेक्ष होने पर पूर्ण निरपेक्षता के सभी स्थिरता लाभ हैं। जब तक कि कुछ और तर्क न हों, मुझे पता नहीं है।
Ade

4

मैंने इसे अपनी साइट में function.php में इसे हल किया

add_action("template_redirect", "start_buffer");
add_action("shutdown", "end_buffer", 999);

function filter_buffer($buffer) {
    $buffer = replace_insecure_links($buffer);
    return $buffer;
}
function start_buffer(){
    ob_start("filter_buffer");
}

function end_buffer(){
    if (ob_get_length()) ob_end_flush();
}

function replace_insecure_links($str) {

   $str = str_replace ( array("http://www.yoursite.com/", "https://www.yoursite.com/") , array("/", "/"), $str);

   return apply_filters("rsssl_fixer_output", $str);

}

मैंने एक प्लगइन का हिस्सा लिया, इसे टुकड़ों में काट दिया और इसे बनाया। इसने मेरी साइट (मेनू, सीएसएस, स्क्रिप्ट आदि) में सभी लिंक को बदल दिया और सब कुछ काम कर रहा था।


0

सेटिंग्स => मीडिया के तहत, 'फ़ाइल्स के लिए पूर्ण URL-पथ' का विकल्प है। यदि आप इसे डिफ़ॉल्ट मीडिया निर्देशिका पथ '/ wp-content / uploads' के बजाय रिक्त पर सेट करते हैं, तो यह सापेक्ष पथ सम्मिलित करेगा जैसे '/wp-content/uploads/2020/06/document.pdf'।

मुझे यकीन नहीं है कि अगर यह सभी लिंक के सापेक्ष बनाता है, उदाहरण के लिए पोस्ट करता है, लेकिन कम से कम यह मीडिया को संभालता है, जो शायद ज्यादातर लोग चिंतित हैं।


यह विकल्प 'फ़ुल URL पाथ टू फाइल्स' डिफ़ॉल्ट रूप से मीडिया सेटिंग्स में दिखाई नहीं देता है। क्या wp-config में कुछ सेटिंग है जो इसे सक्रिय करता है?
AidanCurran

@AidanCurran मुझे पूरा यकीन है कि यह एक लंबे समय के लिए रहा है, लेकिन कुछ शोधों के बाद ऐसा लगता है कि कुछ wp-config इस सब के बाद इसे सक्षम कर रहा है, क्योंकि इसे WP 3.5+ से डिफ़ॉल्ट रूप से हटा दिया गया था। यह एक पुराने प्लगइन का उपयोग करके वापस लाया जा सकता है जैसे: wordpress.org/plugins/upload-url-path-enabler तो, मुझे लगता है कि मेरा एक प्लग इन इसे वापस जोड़ रहा है, भले ही मैंने मुश्किल से कोई भी स्थापित किया हो। बस प्लगइन Futurio अतिरिक्त के साथ एलिमेंट और थीम Futurio का उपयोग कर रहा है। मैंने उन्हें बिना किसी परिवर्तन के अक्षम करने का प्रयास किया, इसलिए निश्चित नहीं: /
गले लगाओ

@AidanCurran आप कुछ इस तरह से जोड़ सकते हैं: update_option ('upload_url_path', '/ wp-content / uploads'); हालांकि, या कुछ कोड स्निपेट प्लगइन के माध्यम से अपने कार्यों के लिए। फाइल में और यह समान प्रभाव होना चाहिए।
गले

-3

get_home_url () का उपयोग करना चाहिए, फिर आपके लिंक निरपेक्ष हैं, लेकिन साइट यूआरएल बदलने पर यह प्रभावित नहीं करता है


-4

मुझे लगता है कि आप क्या करते हैं जब आप डोमेन नाम बदलते हैं, तो आपके पास जो sql डंप फ़ाइल होती है वह पुराने डोमेन नाम के सभी उदाहरणों को नए से बदल सकती है। यह केवल विकल्प उपलब्ध है क्योंकि कोई प्लगइन्स नहीं हैं जो आपको ऐसा करने में मदद करेंगे।

यह है सबसे तेज तरीका ।।


1
ध्यान रखें कि आप क्रमबद्ध PHP स्ट्रिंग्स में डोमेन नाम को बदलना चाहते हैं। यह आसान खोज और की जगह उपकरण काम करने के मानक तरीका (GitHub भंडार हो रहा है यहाँ )। यह Capistrano परिनियोजन समाधान मैं capistrano-wp की तरह उपयोग करता है और बहुत अच्छी तरह से काम करने लगता है। यह आधिकारिक मूविंग वर्डप्रेस कोडेक्स पेज पर भी संदर्भित है ।
मैट गिब्सन

3
यह दृष्टिकोण गड़बड़ है और त्रुटि प्रवण है। अगर हम wp-config में सापेक्ष URL का उपयोग करके इससे बच सकते हैं तो क्या यह इतना बेहतर नहीं है? प्रश्न का बिंदु यह पता लगाना है कि क्या wp-config में सापेक्ष URL का उपयोग करने से समस्या हो सकती है।
अदानुरुरन

-4

एक आसान तरीका है

/pagename/उपयोग के बजाय index.php/pagename/या यदि आप पर्मलिंक का उपयोग नहीं करते हैं तो निम्न कार्य करें:

पद

index.php?p=123

पृष्ठ

index.php?page_id=42

वर्ग

index.php?cat=7

यहां अधिक जानकारी: http://codex.wordpress.org/Linking_Posts_Pages_and_Categories


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