รหัสร้านค้าใน URL สำหรับทุกมุมมองร้านค้ายกเว้นค่าเริ่มต้น


10

ผมได้เปิดใช้งานระบบ > Config > เว็บ > เพิ่มรหัสร้านค้าไปยัง URLและฉันได้ติดตั้งร้านดูใหม่สำหรับแคนาดา (/ CA /)

ฉันต้องการให้มี example.com/ca/ โหลดมุมมองร้านค้าแคนาดา แต่ยังคงมี example.com (โดยไม่ต้องมีdefaultรหัสร้านค้าอยู่) สำหรับร้านค้าเริ่มต้น

ฉันสังเกตเห็นว่าโฮมเพจใช้งานได้ดีในเรื่องนี้ แต่เมื่อฉันเข้าไปในหน้าผลิตภัณฑ์ Magento จะรวมรหัสร้านค้าใน URL โดยอัตโนมัติ

เหตุผลหลักที่ฉันลังเลที่จะเปลี่ยน URL ปัจจุบันของเราสำหรับร้านค้าเริ่มต้นของเราเป็นเพราะฉันเกลียดที่จะเห็นว่าพวกเขาสูญเสียการเชื่อมโยงใด ๆ ฉันรู้ว่าในทางทฤษฎีตราบใดที่ฉันตั้งค่าการเปลี่ยนเส้นทาง 301 ฉันควรจะดี แต่ฉันคิดว่าฉันได้อ่านที่ไหนสักแห่งว่าน้ำผลไม้จำนวนเล็กน้อยยังคงหายไป

นอกจากนี้ฉันคิดว่านี่อาจจะค่อนข้างดีกว่าจากมุมมองการใช้งาน หากการเข้าชมจำนวนมากของคุณไปยังร้านค้าเริ่มต้นของคุณและลูกค้าของคุณคุ้นเคยกับ URL ปกติเหตุใดจึงต้องใส่ใจพวกเขาด้วยการเพิ่ม/default/( /us/หรืออะไรก็ตาม) ใน URL

ฉันได้ลองปิดการใช้งานเพิ่มรหัสร้านค้าเป็น URLและเพียงเปลี่ยน URL พื้นฐานสำหรับมุมมองร้านค้าแคนาดาเป็น example.com/ca/ แต่ดูเหมือนจะไม่ทำอะไรเลย ฉันสมมติว่าจำเป็นต้องเปิดใช้งานการตั้งค่าเพื่อรับรหัสร้านค้าใน URL และทำทุกอย่างด้วย

คำตอบ:


9

ฉันไม่ได้กลายเป็นความสุขโดยใช้เพิ่มรหัสร้านค้าไปยัง URL เหตุผลหลักคือเราไม่สามารถมีหลายมุมมองร้านค้าโดยใช้ภาษาเดียวกัน (ดูคำถามของฉัน) นอกจากนั้นฉันไม่ชอบฉันต้องใช้รหัสมุมมองร้านค้าที่ไม่ดีเพียงเพราะ URL

ฉันทำการทดสอบขนาดเล็กโดยใช้เคล็ดลับ "สร้างโฟลเดอร์ย่อยและสร้าง symlink" ที่แนะนำบ่อยและอาจทำงานได้ โปรดตรวจสอบว่าคุณชอบ

  • สร้างโฟลเดอร์ย่อย / ca /
  • ภายในโฟลเดอร์ย่อยสร้างลิงค์สัญลักษณ์ไปที่
    • ../app
    • ../errors
    • ../includes
    • ../index.php
    • ../js
    • ../lib
    • ../media
    • ../skin
    • ../var
    • (เพิ่มไดเรกทอรีอื่น ๆ หากคุณต้องการ / ต้องการ)
  • แก้ไขการกำหนดค่า vHost สำหรับ / ca / ​​(หรือคัดลอก. htaccess ไปที่ / ca / ​​และแก้ไข)

    • ตั้งฐานเขียนใหม่:

      RewriteBase /ca/

    • เริ่มต้นมุมมองร้านค้าที่ถูกต้องตาม URL มีหลายวิธีที่จะทำซึ่งอาจเป็น:

      RewriteCond %{REQUEST_URI} ^/ca/.* [NC,OR]
      RewriteCond %{REQUEST_URI} ^/ca$ [NC]
      RewriteRule .* - [E=MAGE_RUN_CODE:ca]
      RewriteCond %{ENV:REDIRECT_MAGE_RUN_CODE} (.+)
      RewriteRule .* - [E=MAGE_RUN_CODE:%1,E=MAGE_RUN_TYPE:store]`

มันใช้งานได้สำหรับฉัน:

การสร้างโฟลเดอร์และ symlink ไม่สนุก แต่อย่างน้อยคุณก็ไม่จำเป็นต้องแก้ไขไฟล์หลัก


2
คุณจะต้องทำให้ symlinks สำหรับสื่อ, js และผิวหนังแล้วแก้ไขเส้นทางระดับ Mage ../app/Mage.phpไป เท่าที่ฉันรู้ว่าควรจะเพียงพอ
Sander Mangel

2
ใช่ถ้าคุณต้องการแก้ไขไฟล์หลัก
Matthias Zeis

@MatthiasZeis ขออภัยที่ใช้เวลานานในการยอมรับ! บางครั้งฉันสูญเสียการติดตามการแจ้งเตือน SE และเป็นการยากที่จะทำเครื่องหมายว่ายังไม่ได้อ่าน อย่าลังเลที่จะ ping ฉันใน twitter ในอนาคตถ้าฉันใช้เวลาตลอดไปเพื่อทำเครื่องหมายคำตอบตามที่ยอมรับ! อย่างน้อยคุณก็สามารถทวีตทวีตเพื่อให้จำได้ว่าจะต้องกลับมา ขออภัยและขอบคุณอีกครั้งสำหรับความช่วยเหลือที่นี่! คำตอบที่ดี!
kalenjordan

ไม่ต้องห่วง! ฉันดีใจที่ฉันสามารถช่วยคุณ
Matthias Zeis

2
คำแนะนำที่ดี! สอง simplifications เป็นไปได้: 1) เนื่องจากคุณสร้างการกำหนดค่า vhost แยกต่างหากหรือ htaccess SetEnv MAGE_STORE_VIEW caไฟล์สำหรับไดเรกทอรีย่อยที่คุณสามารถเริ่มต้นมุมมองการจัดเก็บที่ตรงไปตรงมาโดยไม่มีเงื่อนไข: RewriteBaseในทางกลับกันมักไม่จำเป็น 2) ควรจะเพียงพอที่จะตั้ง symlink เป็น index.php และ app หากคุณตั้งค่าBase Link URLเป็น / ca / ​​และปล่อยให้การกำหนดค่าURL พื้นฐานเริ่มต้น
Fabian Schmengler

2

ผู้ใช้clockworkgeekสร้างโมดูล Magento-Store-Codesสำหรับกรณีการใช้งานนี้เท่านั้น

ฉันได้ทดสอบสิ่งนี้ใน CE 1.9.2.3 ด้วยการตั้งค่าเว็บไซต์เดียวที่มีหลายมุมมองร้านค้าและดูเหมือนว่าจะทำงานได้อย่างสมบูรณ์แบบ!

ดูเพิ่มเติมที่: วีโอไอพี: วิธีซ่อนรหัสมุมมองร้านค้าเริ่มต้นจาก URL


1

จากคำตอบของความคิดเห็นของ mzeisและfschmenglerนี่เป็นวิธีที่ KISS ทำ:

  1. สร้างไดเรกทอรีย่อยca:mkdir ca
  2. สร้าง symlink ไปยังappไดเรกทอรี:ln -s ../app/ ca/app
  3. สร้าง symlink ไปที่index.phpไฟล์:ln -s ../index.php/ ca/index.php
  4. สร้าง.htaccessไฟล์ในcaไดเรกทอรี: touch ca/.htaccessมีเนื้อหาดังต่อไปนี้:

    SetEnv MAGE_RUN_CODE ca
    
    RewriteEngine On
    RewriteBase /en/
    
    # solves the issue that the environment variable MAGE_RUN_CODE is only available as REDIRECT_MAGE_RUN_CODE
    # see http://stackoverflow.com/a/10128290/719023 for details
    RewriteOptions inherit
  5. ภายใต้การSystem > Configuration > Webตั้งค่าBase Link URLไป{{unsecure_base_url}}ca/และ{{secure_base_url}}ca/ตามลำดับ

หากด้วยเหตุผลบางอย่างRewriteOptions inheritคุณไม่สามารถใช้ส่วนนี้ได้คุณสามารถคัดลอกส่วนเริ่มต้นmod_rewriteไปยัง.htaccessไฟล์ไดเรกทอรีย่อยแทน

วิธีแก้ปัญหานี้ควรใช้งานได้ดีเหมือนกับ mzeis แต่มีขนาดเล็กกว่าและง่ายกว่ามาก


0

อีกตัวเลือกหนึ่งคือการใช้โดเมนย่อยต่อร้าน จากนั้นคุณเพียงตั้งค่า Apache เพื่อบอกคุณภาพเยี่ยมว่า "เว็บไซต์ / ร้านค้า" ใช้งานอย่างไร

วิธีนี้คุณสามารถมี "ร้านค้า" และ "มุมมอง" หลายแห่งภายใต้เว็บไซต์ย่อยทั้งหมดใน magento เดียวกันทั้งหมด

  • การตั้งค่าอยู่ในระบบ> การกำหนดค่า> ทั่วไป / เว็บ
  • ไม่ปลอดภัย URL ฐาน
  • ปลอดภัย URL ฐาน
  • คุกกี้ . โดเมน

นี่คือ example.com ที่เก็บ Apache config

<VirtualHost *:80>
    AllowEncodedSlashes On

    ServerName example.com
    ServerAdmin admin@example.com
    DocumentRoot /var/www/html/

    DirectoryIndex index.php

    <Directory "/var/www/html/" >
        AllowOverride All
    </Directory>

    SetEnv MAGE_RUN_CODE "default"
    SetEnv MAGE_RUN_TYPE "Website"
</VirtualHost>

นี่คือ "ca" store Apache config เพิ่มเติม

<VirtualHost *:80>
    AllowEncodedSlashes On

    ServerName ca.example.com
    ServerAdmin admin@example.com
    DocumentRoot /var/www/html/

    DirectoryIndex index.php

    <Directory "/var/www/html/" >
        AllowOverride All
    </Directory>

    SetEnv MAGE_RUN_CODE "ca"
    SetEnv MAGE_RUN_TYPE "Website"
</VirtualHost>

0

เพียงเพิ่มไฟล์นี้ลงในไฟล์ system.xml ของคุณ (ในโมดูล / รหัส / โลคัล):

<sections>
    <web>
        <groups>
            <url>
                <fields>
                    <use_store>
                        <show_in_store>1</show_in_store>
                    </use_store>
                </fields>
            </url>
        </groups>
    </web>
</sections>

วิธีนี้คุณสามารถเลือกตัวเลือก "เพิ่มรหัสร้านค้ากับ URL" ต่อการดูร้านค้า


คุณสามารถเลือกได้ แต่คุณแน่ใจหรือว่ามันใช้งานได้จริง?
Fabian Schmengler

ใช่ผ่านการทดสอบบน magento 1.9.x และ magento EE 1.13.x
nverhoye

คงจะดีมากถ้าใช้งานได้จริง แต่ฉันไม่สามารถทำให้การตั้งค่านี้มีเว็บไซต์เดียวและหลายมุมมองร้านค้า ทดสอบกับ CE 1.9.2.3
Aad Mathijssen

ไม่ทำงานสำหรับฉัน
Visakh B Sujathan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.