सबफ़ोल्डर में विभिन्न स्टोर या वेबसाइट


29

एक ग्राहक चाहता है कि उसकी मल्टीस्टोरी शॉप को इस तरह स्थापित किया जाए:

यह एक उदाहरण है, लेकिन कई और अधिक सबफ़ोल्डर हो सकते हैं। विभिन्न स्टोर दृश्य / वेबसाइटों के लिए अलग-अलग सबफ़ोल्डर्स को संभालने के लिए सबसे अच्छा तरीका क्या है?

मुझे पता है कि एक समाधान है de, enजैसे सबफ़ोल्डर्स बनाने के लिए , आदि। और इसी सबफ़ोल्डर्स में index.php और .htaccess की प्रतिलिपि बनाएँ।

फ़ाइल डुप्लीकेशन को कम करने के लिए कुछ वर्कआर्ड्यूज़ (index.php, vHost कॉन्फ़िगरेशन का उपयोग करने के बजाय .htaccess) हो सकता है, लेकिन मैं एक ऐसा समाधान ढूंढना चाहूँगा जहाँ मुझे फ़ाइल सिस्टम में कोई बदलाव न करना पड़े, लेकिन बस सब कुछ विन्यास द्वारा संभाल।


अद्यतन करें

हमने एंटरप्राइज़ समर्थन के साथ सत्यापित किया कि ऐसा करने का सबसे अच्छा तरीका सबफ़ोल्डर बनाकर है।

हमने इसे इस तरह से पूरा किया:

  • एक "भाषा-बोधक" निर्देशिका बनाएँ
  • निर्देशिका के अंदर index.php की एक प्रतिलिपि बनाई गई। एक समायोजित .htaccess और Magento फ़ोल्डर्स (एप्लिकेशन / त्रुटियों, / ...) के लिए सहानुभूति के साथ।
  • Magento रूट निर्देशिका के अंदर "डी", "एन" आदि बनाए गए "लैंगफॉल्डर्स" निर्देशिका की ओर इशारा करते हुए

इस तरह हम एक नई सिमिलिंक (जैसे "fr") बनाकर एक नई भाषा जोड़ सकते हैं।


हमने केवल यह पता लगाने के लिए यह किया है कि वेबसाइट किसी भी उत्पाद या श्रेणी (Magento 404 / पृष्ठ के लिए कोई मार्ग नहीं) पा सकती है। क्या इससे भी आपका सामना हुआ?
snh_nl

जहाँ तक मुझे याद है, माफ करना। क्या आपने सभी इंडेक्स बनाए थे?
मथायस ज़ीस

हम nginx का उपयोग करते हैं और इसे काम करने के लिए एक अद्यतन आवश्यक है। मैं अपनी टिप्पणी
snh_nl

2 और अजीब बातें। 1) / चेकआउट रिटर्न 404 और 2) भाषा चयनकर्ता: अगर मैं अंग्रेजी पर क्लिक करता हूं, तो अंग्रेजी पर फिर से क्लिक करें हम देखते हैं कि uri / en / en / en / etc जोड़ रहा है .... आपने आधार यूआरएल के रूप में क्या चुना? domain.com/en या दीदी आप इसे domain.com के रूप में रखते हैं
snh_nl

हमने domain.com/en/ को चुना।
मथायस ज़ीस

जवाबों:


18

URL के आधार पर कई डोमेन / पथ की सेवा करना बहुत आसान है। जैसा कि उल्लेख किया गया है, सबसे आसान सेटअप (कॉन्फ़िगरेशन-ओनली) संभव है जब core/storeउप-कोडर के रूप में अद्वितीय कोड का उपयोग पथ में किया जा सकता है । इसके लिए निम्न में से एक की आवश्यकता होती है:

  1. आगंतुक शुरू में सही सबफ़ोल्डर पथ से जुड़े होते हैं
  2. आगंतुकों को एक लैंडिंग पृष्ठ दिया जाता है, जहाँ से वे अपने स्टोर का चयन करते हैं और एक कुकी प्राप्त करते हैं
  3. कुछ तंत्र का उपयोग PHP को प्रतिक्रिया देने से पहले रन प्रकार और रन कोड को सेट करने के लिए किया जाता है

# 3 के बारे में: 1.4 मैगनेटो के बाद से, वेब सर्वर को चल रहे संदर्भ ( वेबसाइट या स्टोर ) के साथ-साथ उस विशेष कोड को निर्धारित करने की अनुमति देना संभव हुआ जिसका उपयोग किया जाना चाहिए। से index.php :

/* Store or website code */
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';

/* Run store or run website */
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';

Mage::run($mageRunCode, $mageRunType);

जबकि पर्यावरण चर का उपयोग अनुप्रयोग को आरंभ करने के लिए किया जाता है, यह संभव है कि PHP से पहले की प्रणाली को भी प्रभावित किया जाए। अपाचे के साथ और mod_rewriteयह सब कुछ चालबाजों के साथ किया जा सकता है:

RewriteCond %{REQUEST_URI} ^/de/$
RewriteRule .* - [E=MAGE_RUN_CODE:deutsch]
RewriteCond %{ENV:REDIRECT_MAGE_RUN_CODE} (.+)
RewriteRule .* - [E=MAGE_RUN_CODE:%1]

अपाचे पर्यावरण चर और सबफ़ोल्डर्स के साथ चिकोटी है, जैसा कि इस उत्कृष्ट एसओ उत्तर द्वारा प्रदर्शित किया गया है । प्रारंभिक दो पंक्तियों का परिणाम होता है $_SERVER["REDIRECT_MAGE_RUN_CODE"] = 'deutsch';जबकि बाद की दो पंक्तियाँ आवश्यक रूप से प्रदान करती हैं $_SERVER["MAGE_RUN_CODE"] = 'deutsch';। कई अन्य चालें हैं, लेकिन ऊपर मुझे पहले काट दिया है।

अंतिम लक्ष्य को प्रारंभिक पता होना चाहिए जितना कि उचित (जियोइप + मल्टी-लैंग्वेज चिंताओं) है, जबकि उपयोगकर्ता को स्टोर कुकी को सेट करने के लिए मिल रहा है जिसे बाद के अनुरोधों में तर्क के माध्यम से बायपास / कदम करने के लिए इस्तेमाल किया जा सकता है।


1
धन्यवाद, बेन। इसे इस तरह से करते हुए, मैं स्टोर के विचारों को इनिशियलाइज़ कर सकता हूं लेकिन मुझे हमेशा मैगेंटो 404 पेज ("व्हाट्स अप, हमारा बैड") मिलता है। मैंने आधार URL को domain1.org/en , domain.org/de इत्यादि पर सेट किया। स्किन URL, Media URL आदि को domain.org/ (स्किन | मीडिया | ...) पर सेट किया जाता है। कृपया ध्यान दें कि यदि "सामान्य" copy index.php और .htaccess "एप्रोच का उपयोग करने पर सही पेज वापस आ जाते हैं।
मथायस ज़ीस

मैंने इस उत्तर को स्वीकार कर लिया है क्योंकि इसे पूरा करने के लिए हमने जो भी करने की कोशिश की है, वह सबसे करीब है (यहां तक ​​कि जब हमने इसे अपनी विशेष आवश्यकताओं के लिए थोड़ा अलग हल किया)।
मथायस ज़ीस

वास्तव में आश्चर्य हुआ कि "स्टोर कोड को URL में जोड़ें" सेटिंग काम नहीं की।
benmarks

स्टोर कोड अद्वितीय होने चाहिए। डे / फ्र, या एन / के साथ समाप्त होने वाले सभी स्टोर के विचारों के साथ कैसे काम करना चाहिए?
मथायस ज़ीस

मुझे लगता है मैं दोहराया स्टोर कोड याद किया लगता है, हालांकि मुझे लगता है कि मैं यह सोचते था कुछ वेब सर्वर आधारित पुनर्लेखन (जैसे mode_rewrite) के आधार पर HTTP_HOST+ सबफ़ोल्डर स्तर 1.
benmarks

9

यदि इंडेंट किए गए URL (सबफ़ोल्डर्स) का नाम समान हो सकता है जैसे स्टोर कोड (क्यों नहीं?), आप बस सक्षम कर सकते हैं Configuration > Web > Url options > Add Store Code to Urls


सही है, तो आपको सबफ़ोल्डर्स की भी आवश्यकता नहीं होगी। जब तक url पुनर्लेखन सक्षम किया जाता है, Magento को पता चल जाएगा कि "en" एक स्टोरव्यू कोड है और सबफ़ोल्डर के लिए नहीं है।
पॉल ग्रिगोरटा

8
इस समाधान के साथ समस्या यह है कि Magento केवल एक स्टोर कोड "de" को Magento की स्थापना में अनुमति देता है। इसलिए यदि आपके पास एक ही भाषा वाली कई वेबसाइट हैं, तो आपको अलग-अलग स्टोरकोड का उपयोग करना होगा, जैसे कि de_de, de_en, ...
therouv

2
रूवेन को मिला। समस्या यह है कि आपके पास एक ही स्टोर कोड के साथ कई स्टोर नहीं हो सकते हैं।
अन्ना वोक्कल

हां, समस्या यह है कि - जैसा कि रूवेन ने कहा - आपके पास एक ही स्टोर कोड का उपयोग करके दो स्टोर व्यू नहीं हो सकते।
मथायस ज़ीस

मैं पुष्टि करता हूं कि रूवेन ने इसे सही पाया। Magento के लिए एक बग की सूचना दी गई थी। क्योंकि इन आधुनिक वातावरण में अधिक मल्टीस्टोर्स के साथ यह काम करना चाहिए। हालांकि, क्या आपको लगता है कि सेटिंग Add store codes to urlको स्टोरव्यू सेटिंग बनाना संभव होगा ? magento.stackexchange.com/questions/60686/… = मान लीजिए कि वहाँ 1 मल्टीपोर है sep डोमेन के साथ, दूसरा उपयोग / en और / fr
snh_nl

3

हमने ठीक वैसा ही किया

हमने एंटरप्राइज़ समर्थन के साथ सत्यापित किया कि ऐसा करने का सबसे अच्छा तरीका सबफ़ोल्डर बनाकर है।

हमने इसे इस तरह से पूरा किया:

  • एक "भाषा-बोधक" निर्देशिका बनाएँ
  • निर्देशिका के अंदर index.php की एक प्रतिलिपि बनाई गई। एक समायोजित .htaccess और Magento फ़ोल्डर्स (एप्लिकेशन / त्रुटियों, / ...) के लिए सहानुभूति के साथ।
  • Magento रूट निर्देशिका के अंदर "डी", "एन" आदि बनाए गए "लैंगफॉल्डर्स" निर्देशिका की ओर इशारा करते हुए

इस तरह हम एक नई सिमिलिंक (जैसे "fr") बनाकर एक नई भाषा जोड़ सकते हैं।

बैकएंड में हमने स्टोर base urlको सेट कियाdomain.com/en

यदि आप nginx का उपयोग करते हैं तो एक अपडेट आपके स्थान प्रसंस्करण के लिए आवश्यक है। नए उप फ़ोल्डर में भी index.php को संसाधित करें। यह हर नए अनुवाद फ़ोल्डर के लिए किया जाना चाहिए


snh_nl क्या कोई मौका है जो आपको समझाए कि आपकी अंतिम 2 पंक्तियों का क्या मतलब है? मुझे वही समस्या हो रही है जो आपने पहले कही थी, लेकिन मुझे समझ नहीं आ रहा है: यदि आप nginx का उपयोग करते हैं तो आपके स्थान प्रसंस्करण के लिए एक अद्यतन आवश्यक है। नए उप फ़ोल्डर में भी index.php को संसाधित करना आवश्यक है। यह हर नए अनुवाद फ़ोल्डर के लिए किया जाना चाहिए। मैं nginx का उपयोग कर रहा हूँ और मैं भी ऐसा ही करने की कोशिश कर रहा हूँ। धन्यवाद
vbak

location @rewrite { rewrite /(../)? /$1index.php; }
snh_nl

2

आधिकारिक Magento ज्ञानकोष में एक प्रविष्टि है जो वास्तव में वर्णन करती है।

यदि आप अपाचे के साथ काम कर रहे हैं, तो सुनिश्चित करें कि सभी वर्चुअल होस्ट प्रविष्टियाँ (प्रत्येक डोमेन के लिए) उसी दस्तावेज़ रूट की ओर इशारा करती हैं जहाँ आपका Magento इंस्टॉलेशन निहित है। यह कई डोमेन के लिए है।

अगली (और अंतिम) बात एक ही Magento के स्थापना फ़ोल्डर में .htaccess है। .htaccess एक शक्तिशाली निर्देशिका-स्तरीय कॉन्फ़िगरेशन फ़ाइल है, जहाँ आप प्रत्येक सर्वर अनुरोध के अनुसार नियम-क्रियाएँ सेट कर सकते हैं। इसलिए आपको वहां सभी अलग-अलग (उप) डोमेन / फ़ोल्डर क्रियाओं को संभालना होगा और सही सर्वर वेरिएबल्स को सेट करना होगा जो मैगेंटो शुरुआती चरण में उपयोग करता है।

सर्वर कॉन्फ़िगरेशन के साथ काम करने के बाद, आपको Magento के व्यवस्थापक (सिस्टम - कॉन्फ़िगरेशन - सामान्य - वेब) में प्रत्येक स्टोर के लिए अलग-अलग आधार पथ सेट करने होंगे।

इसलिए सुनिश्चित करें कि आप आधिकारिक गाइड का पालन करें (जो कि पसंदीदा तरीका भी है) और चीजों को सुचारू रूप से काम करना चाहिए।


1
सवाल कई डोमेन के बारे में नहीं था।
फाबियन शेंगलर

प्रश्न मल्टीपल डोमेन (.org और .ch अलग-अलग डोमेन हैं) के साथ मल्टीस्टोर सेटअप के बारे में था। ऐसा नहीं है कि यह हालांकि मायने रखता है, क्योंकि प्रदान किया गया उत्तर बहुस्तरीय सेटअप के समाधान का वर्णन करता है, भले ही आपके पास अपने प्रत्येक स्टोर के लिए एकाधिक डोमेन, उप डोमेन या बस अलग-अलग सबफ़ोल्डर हों।
जर्नजीज गोलजा २५'१३ को

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

1
वास्तव में, समस्या यह नहीं है कि कई डोमेन का उपयोग किया जाना है, लेकिन कई दुकानों को उसी पथ / "सबफ़ोल्डर" को साझा करना होगा जो URL में स्टोर कोड जोड़कर संभव नहीं है।
मथायस ज़ीस

-2

पहले आपको Magento के व्यवस्थापक पैनल में कुछ कॉन्फ़िगरेशन करना होगा, फिर एक उपनिर्देशिका बनाएँ, और index.php और .htaccess को उपनिर्देशिका में स्थानांतरित करें, और index.php में कुछ छोटे बदलाव करें।

यह कैसे करना है, इसका एक पूरा उदाहरण यहां दिया गया है।

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