Varsayılan dışında her mağaza görünümü için URL'de mağaza kodu


10

Sistem > Config > Web > URL'lere Mağaza Kodu Ekle'yi etkinleştirdim ve Kanada için yeni bir Mağaza Görünümü (/ ca /) kurdum.

İdeal Kanada Mağaza Görünümü yüklemek example.com/ca/ istiyorum, ama yine de defaultvarsayılan mağaza için example.com ( orada mağaza kodu olmadan ) var.

Ana sayfanın bu konuda gayet iyi çalıştığını fark ettim, ancak bir ürün sayfasına gittiğimde Magento otomatik olarak URL'ye mağaza kodunu ekliyor.

Varsayılan mağazamız için mevcut URL'lerimizi değiştirmekten çekinmememin temel nedeni, herhangi bir bağlantı suyunu kaybetmelerini istemekten nefret etmemdir. Teorik olarak 301 yönlendirmeleri ayarladığım sürece iyi olmalıyım, ama sanırım bir yerde az miktarda meyve suyunun hala kaybolduğunu okudum.

Ayrıca, bunun kullanılabilirlik açısından muhtemelen biraz daha iyi olduğunu düşünüyorum. Trafiğinizin büyük kısmı varsayılan mağazanızdaysa ve müşterileriniz normal URL için kullanılıyorsa, neden URL'deki ek /default/( /us/veya herhangi bir şey) ile onları rahatsız edersiniz .

URL'lere Mağaza Kodu Ekle'yi devre dışı bırakmayı ve basitçe Kanada Mağaza Görünümü'm için Temel URL'yi example.com/ca/ olarak değiştirmeyi denedim , ancak bu hiçbir şey yapmadı. Ben URL mağaza kodunu almak ve onunla hiç bir şey yapmak için etkin ayar gerekiyor varsayalım.

Yanıtlar:


9

URL'lere Mağaza Kodu Ekle'yi kullanmaktan mutlu olmadım . Bunun ana nedeni, aynı dili kullanan birkaç mağaza görünümümüzün olmamasıydı ( soruma bakın ). Yanı sıra ben sadece URL nedeniyle kötü bir mağaza görünüm kodu kullanmak zorunda gibi değildi.

Ben sık sık "bir alt klasör oluşturmak ve semboller oluşturmak" ipucu kullanarak küçük bir test yaptım ve işe yarayabilir. Lütfen beğenip beğenmediğinizi kontrol edin.

  • Bir alt klasör / ca /
  • Alt klasörün içinde simgesel bağlantılar oluşturun
    • ../app
    • ../hatalar
    • ../içerir
    • ../index.php
    • ../js
    • ../lib
    • ../media
    • ../skin
    • ../var
    • (isterseniz / gerekirse diğer dizinleri ekleyin)
  • / ca / ​​için vHost yapılandırmanızı düzenleyin (veya .htaccess dosyasını / ca / ​​dizinine kopyalayın ve düzenleyin)

    • Yeniden yazma tabanını ayarlayın:

      RewriteBase /ca/

    • URL'yi temel alarak doğru mağaza görünümünü başlatın. Bunu yapmanın birçok yolu vardır, biri olabilir:

      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]`
      

Benim için çalıştı:

Klasörler ve semboller oluşturmak eğlenceli değildir, ancak en azından çekirdek dosyaları düzenlemeniz gerekmez.


2
Yalnızca medya, js ve cilt için sembolik bağlantılar yapmanız ve ardından Mage sınıfı yolunu düzenlemeniz gerekir ../app/Mage.php. Bildiğim kadarıyla bu yeterli olmalı
Sander Mangel

2
Temel dosyaları düzenlemek istiyorsanız, evet.
Matthias Zeis

@MatthiasZe kabul etmek çok uzun sürdüğü için üzgünüm! Bazen SE bildirimlerini takip etmiyorum ve okunmamış olarak işaretlemek zor. Sonsuza dek bir cevabı kabul edilmiş olarak işaretlemem gerekirse beni Twitter'da pinglemekten çekinmeyin! En azından twitter ile geri dönmeyi hatırlamak için bir tweet'i favorilere ekleyebilirsin. Üzgünüm ve burada yardım için tekrar teşekkürler! Mükemmel cevap!
14:58

Telaşa gerek yok! Sana yardım edebildiğim için memnunum.
Matthias Zeis

2
Büyük tavsiye! İki olası basitleştirmeler: 1) ayrı vhost yapılandırmalarını veya alt dizin için .htaccess dosyaları oluşturmak olduğundan, şart olmadan mağaza görünümü basit başlatabilir: SetEnv MAGE_STORE_VIEW ca. RewriteBasediğer yandan genellikle gerekli değildir. 2) Yalnızca Temel Bağlantı URL'sini / ca / ​​olarak ayarlarsanız ve varsayılan Temel URL yapılandırmasını bırakırsanız,
sembol


1

Mzeis ve fschmengler'in yorumunun cevabına dayanarak, bunu yapmanın KISS yolu:

  1. Bir alt dizin oluşturun ca:mkdir ca
  2. appDizine bir sembolik bağlantı oluşturun :ln -s ../app/ ca/app
  3. index.phpDosyaya bir sembolik bağlantı oluşturun :ln -s ../index.php/ ca/index.php
  4. Dizinde bir .htaccessdosya oluşturun ca: touch ca/.htaccessaşağıdaki içeriğe sahip:

    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. Altında System > Configuration > Web, set Base Link URLetmek {{unsecure_base_url}}ca/ve {{secure_base_url}}ca/sırasıyla.

Herhangi bir nedenden ötürü, RewriteOptions inheritparça sizin için mümkün değilse, varsayılan mod_rewriteparçayı.htaccess bunun yerine alt dizin dosyanıza da kopyalayabilirsiniz .

Bu çözüm mzeis kadar iyi çalışmalıdır, ancak çok daha küçük ve daha kolaydır.


0

başka bir seçenek de mağaza başına bir alt alan adı kullanmaktır. Sonra sadece hangi "web sitesi / mağaza" kullanacağınızı söylemek için Apache kurmak.

Bu şekilde, aynı magento intall alt alan web sitelerinin altında birden çok "mağaza" ve "görünüm" olabilir.

  • ayarlar Sistem> Yapılandırma> Genel / Web'de
  • Güvensiz . Temel URL
  • Güvenli. Temel URL
  • Kurabiye . Alan adı

bu example.com mağazası 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>

Bu ek "ca" mağaza Apache yapılandırma

<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

Juste bunu system.xml dosyanızdan birine ekleyin (uygulama / kod / yerel modülde):

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

Bu şekilde mağaza görünümü başına "URL'lere Mağaza Kodu Ekle" seçeneğini belirleyebilirsiniz.


Seçebilirsiniz. Ama gerçekten işe yaradığından emin misiniz?
Fabian Schmengler

Evet, magento 1.9.x ve magento EE 1.13.x üzerinde test edildi
nverhoye

Bu gerçekten işe yarayacak olsaydı harika olurdu, ama bu işi bir web sitesi ve birden fazla mağaza görünümü ile bir ortamda yapamadım. CE 1.9.2.3'te test edilmiştir.
Aad Mathijssen

benim için çalışmadı
Visakh B Sujathan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.