2012-09-20 15 views
5

लौट रहा है, भले ही मैं HTTPS पर हूं, Magento's getProductUrl() हमेशा एक HTTP यूआरएल लौटता प्रतीत होता है। किसी भी तरह से मैं इस ऑटो-स्विच को HTTPS पर कर सकता हूं? (या यह सापेक्ष प्रोटोकॉल यूआरएल वापस आ गया है)।Magento getProductUrl() हमेशा HTTP

मैं कहूंगा कि यह एक 'मानक' कॉन्फ़िगरेशन है।

आधार URL http://example.com/

सुरक्षित यूआरएल दृश्यपटल में https://example.com/

उपयोग सुरक्षित यूआरएल है कोई

बेस कड़ी यूआरएल है है {{unsecure_base_url}}

मुझे पता है मैं बदल सकता हूँ उपरोक्त {{secure_base_url}} हालांकि मैं HTTP से HTTPS में परिवर्तन को मजबूर नहीं करना चाहता, मुझे केवल इसके संबंध में रहने की आवश्यकता है।

+0

प्रश्न में विवरणों की कमी है: 1) "जब भी मैं एचटीटीपीएस पर हूं" - क्या आपने "https: //" लिंक के माध्यम से अग्रभाग दर्ज किया है? 2) "बेस यूआरएल", "बेस लिंक यूआरएल" और "जीनियल \ वेब \ सिक्योर" सेक्शन में "सुरक्षित यूआरएल इन फ्रंटेंड" के लिए कॉन्फ़िगरेशन क्या है? –

+0

प्रश्न को अपडेट किया गया, धन्यवाद @AndreyTserkus –

उत्तर

11

मुख्य Magento के लाभ यह है कि आप कुछ भी उसे अपने साथ :) तो चाहते हैं कर सकते हैं, हाँ, आप कर सकते हैं उत्पादन HTTPS उत्पाद है यूआरएल या रिश्तेदार। हालांकि, समाधान चुनने से पहले, आइए Magento लेखकों की दृष्टि पर विचार करें।

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

डिफ़ॉल्ट रूप से Magento ऊपर वर्णित पृष्ठों के लिए भी HTTPS का उपयोग नहीं करता है। एचटीटीपीएस चालू करने के लिए, "फ्रंटएंड में सुरक्षित यूआरएल का उपयोग करें" विकल्प को "हां" पर सेट किया जाना चाहिए। जैसा कि वर्णन किया गया है, केवल उन पृष्ठों के सीमित सेट में HTTPS संलग्न करेगा जिनमें कुछ निजी डेटा शामिल है।

तो आपके लिए सबसे अच्छा समाधान स्टोर के विनिर्देशों पर निर्भर करता है, आप विकास कर रहे हैं।

1) यदि आप फ्रंट पेज पर सभी पृष्ठों के लिए HTTPS संलग्न करना चाहते हैं - तो सबसे अच्छा समाधान "असुरक्षित" वेब यूआरएल कॉन्फ़िगरेशन के लिए "https URL" विकल्प में "https: // ..." डालना है।

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

echo trim($_product->getProductUrl(),'http:') 

3) आप दृश्यपटल बिल्कुल उत्पाद लिंक के लिए HTTPS संलग्न करना चाहते हैं - तो सबसे अच्छा तरीका है ओवरराइड Mage_Catalog_Module_Product_Url मॉडल और परिवर्तन विधि getUrl() - तुम वहाँ

$routeParams['_secure'] = true; 

डाल करने के लिए यह HTTPS प्रोटोकॉल के साथ सभी उत्पाद यूआरएल का उत्पादन करेगा की आवश्यकता है।

4) यदि आपको केवल एचटीटीपीएस पृष्ठों पर HTTP पृष्ठों और एचटीटीपीएस उत्पाद लिंक पर HTTP उत्पाद लिंक दिखाने की आवश्यकता है, तो आप एक अधिक परिष्कृत तर्क के साथ विधि 3 का उपयोग कर सकते हैं: '_secure' सेट करने से पहले वर्तमान पृष्ठ के प्रोटोकॉल की जांच करें 'पैरामीटर।

आशा है, यह मदद करता है।

+0

आपके उत्तर के लिए धन्यवाद। मेरा तरीका एक सापेक्ष प्रोटोकॉल यूआरएल उदाहरण बनाता है। //example.com/shoe.html ताकि आप हमेशा एक ही प्रोटोकॉल पर रहें। (Fancybox के साथ कुछ AJAX सामान के लिए आवश्यक था :) –

1

मैं सिर्फ यह आदिम तरीका था, कभी कभी यह सबसे अच्छा काम करता है:

echo trim($_product->getProductUrl(),'http:') 
-2

थैर सिस्टम में एक संक्षिप्त लेकिन महत्वपूर्ण विकल्प है। कॉन्फ़िगरेशन | वेब ~ जहां आपको "फ्रंट में सुरक्षित यूआरएल का उपयोग करना है" - यदि आप इसे हाँ पर सेट करते हैं तो https द्वारा लोड किया गया एक पृष्ठ https लिंक,

कोड लिखने की आवश्यकता नहीं है या अधिकांश मामलों में अतिरिक्त कॉन्फ़िगरेशन प्रदान करने की आवश्यकता नहीं है

0

इसके बजाय

$product->getProductUrl() 

$product->getUrlModel()->getUrl($product, array('_secure'=>(bool)Mage::app()->getStore()->isCurrentlySecure())) 

यह आप एक सुरक्षित/असुरक्षित उत्पाद अपने वर्तमान प्रोटोकॉल पर आधारित यूआरएल देता है की कोशिश करो।