Код магазину в URL-адресі для кожного представлення магазину, за винятком типового


10

Я ввімкнув Систему > Налаштувати > Веб > Додати Код магазину до URL-адрес, і я налаштував новий вид магазину для Канади (/ ca /).

В ідеалі я хотів би завантажити example.com/ca/ завантажити Канаду View Store, але все ж мати example.com (без defaultкоду магазину там) для магазину за замовчуванням.

Я помітив, що домашня сторінка в цьому плані працює чудово, але коли я переходжу на сторінку продукту, Magento автоматично включає URL магазину в URL-адресу.

Основною причиною того, що я вагаюся змінити наші поточні URL-адреси для нашого магазину за замовчуванням, є лише те, що я не хочу бачити, як вони втрачають будь-який сік посилання. Я знаю, що теоретично, поки я встановлюю переадресацію 301, я повинен бути добре, але думаю, десь читав, що невелика кількість соку все-таки втрачається.

Крім того, я думаю, це, мабуть, дещо краще з точки зору зручності використання. Якщо основна частина вашого трафіку припадає на ваш магазин за замовчуванням, а ваші клієнти звикли до звичайної URL-адреси, навіщо їх турбувати додатковими /default/( /us/або якими б то не було) в URL-адресі.

Я спробував відключити Додати код магазину до URL-адрес і просто змінив базову URL-адресу для мого представлення магазину Канади на example.com/ca/, але, здається, це нічого не зробило. Я припускаю, що для цього потрібно ввімкнути налаштування, щоб забрати код магазину в URL-адресі і взагалі зробити з ним щось.

Відповіді:


9

Я не зрадів, використовуючи Додати код магазину до URL-адрес . Основна причина полягала в тому, що ми не могли мати кілька переглядів магазинів, використовуючи одну і ту ж мову (див. Моє запитання ). Крім того, мені не сподобалося, що я маю використовувати неправильний код перегляду магазину саме через URL-адресу.

Я зробив невеликий тест, використовуючи часто рекомендовану підказку "створити підпапку і створити посилання", і це може працювати. Перевірте, чи сподобалось вам.

  • Створіть підпапку / ca /
  • Всередині підпапки створіть символічні посилання на
    • ../app
    • ../помилки
    • ../включає
    • ../index.php
    • ../js
    • ../lib
    • ../медіа
    • ../шкіра
    • ../вар
    • (додайте інші каталоги, якщо хочете / потрібно)
  • відредагуйте свій конфігурацію 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]`
      

Це працювало для мене:

Створення папок і посилань не є цікавим, але принаймні вам не потрібно редагувати основні файли.


2
Вам потрібно лише зробити посилання на медіа, js та скін, а потім відредагувати шлях класу Mage до ../app/Mage.php. Наскільки я знаю, цього повинно вистачити
Сандер Манґел

2
Так, якщо ви хочете редагувати основні файли.
Маттіас Зейс

@MatthiasZeis шкода за те, що прийняв так довго, щоб прийняти! Іноді я втрачаю сповіщення про сповіщення SE і важко позначити їх як непрочитані. Не соромтесь пінгувати мене щебетати на твіттері, якщо я візьмусь назавжди, щоб відзначити відповідь прийнятою! Принаймні за допомогою твіттера ви можете улюбити твіт, щоб не забути повернутися до нього. Вибачте і ще раз дякую за допомогу тут! Чудова відповідь!
kalenjordan

Не хвилюйтесь! Я радий, що можу тобі допомогти.
Маттіас Зейс

2
Чудова порада! Два можливі спрощення: 1) Так як створювати окремі конфігурації ВХоста або файли .htaccess для підкаталогу, ви можете форматувати магазин перегляд нескладний без умов: SetEnv MAGE_STORE_VIEW ca. RewriteBaseз іншого боку, як правило, не потрібно. 2) Досить встановити символьні посилання на index.php і додаток, якщо ви лише встановите URL-адресу базового посилання на / ca / ​​і залишите конфігурацію базової URL-адреси за замовчуванням
Fabian Schmengler

2

Користувач clockworkgeek створив модуль Magento-Store-Codes саме для цього випадку використання.

Я перевірив це на CE 1.9.2.3 за допомогою однієї установки веб-сайтів з декількома переглядами магазину, і, здавалося, він ідеально працює!

Дивіться також: Magento: Як приховати код перегляду за замовчуванням у магазині від URL-адреси


1

На підставі відповіді mzeis і коментар fschmengler в , ось ПОЦЕЛУЙ спосіб зробити це:

  1. Створіть підкаталог ca:mkdir ca
  2. Створіть символьне посилання на appкаталог:ln -s ../app/ ca/app
  3. Створіть символьне посилання на 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, щоб сказати магенто, який "веб-сайт / магазин" використовувати.

Таким чином, ви можете мати декілька "магазинів" і "переглядів" на веб-сайтах, розташованих в субдоменах, все в тому ж магенто.

  • налаштування знаходяться в Системі> Конфігурація> Загальне / Інтернет
  • Невпевнений. Базова URL-адреса
  • Безпечний. Базова URL-адреса
  • Печиво. Домен

це example.com конфігурація магазину Apache

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

це додатковий конфігураційний магазин Apache у магазині "ca"

<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 додайте це до одного із файлів system.xml (у додатку / коді / локальному модулі):

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

Таким чином ви можете вибрати опцію "Додати код магазину до URL-адрес" для кожного представлення магазину.


Ви можете вибрати його. Але ви впевнені, що це насправді працює?
Фабіан Шменглер

Так, перевірено на magento 1.9.x та magento EE 1.13.x
nverhoye

Було б чудово, якби це насправді спрацювало, але мені не вдалося зробити цю роботу в налаштуваннях з одним веб-сайтом та кількома переглядами магазину. Випробувано на CE 1.9.2.3.
Aad Mathijssen

не працював для мене
Visakh B Sujathan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.