デフォルト以外のすべてのストアビューのURLにコードを格納する


10

[ システム] > [ 構成] > [ ウェブ] > [ 店舗コードをURLに追加]を有効にし、カナダ向けの新しい店舗ビュー(/ ca /​​)を設定しました。

理想的には、example.com / ca /​​にCanada Store Viewをロードさせたいdefaultのですが、デフォルトのストアのexample.com(ストアコードなし)がまだあります。

この点でホームページは問題なく機能していることに気付きましたが、製品ページに移動すると、Magentoは自動的に店舗コードをURLに含めます。

デフォルトストアの現在のURLを変更するのをためらう主な理由は、リンクジュースが失われるのを見たくないからです。理論的には、301リダイレクトを設定している限り、大丈夫なはずですが、少量のジュースがまだ失われていることはどこかで読んだと思います。

また、ユーザビリティの観点からは、これはおそらく多少良いと思います。トラフィックの大部分がデフォルトストアへのものであり、顧客が通常のURLに慣れている場合、URLの追加/default/(またはその他/us/)で顧客を悩ませるのはなぜですか。

[ 店舗コードをURLに追加]を無効して、カナダの店舗ビューのベースURLを単にexample.com/ca/に変更しようとしましたが、何も実行されなかったようです。URLで店舗コードを取得し、それを使用して何かを実行するには、設定を有効にする必要があると思います。

回答:


9

[ 店舗コードをURLに追加]を使用して満足できませんでした。主な理由は、同じ言語を使用して複数のストアビューを作成できなかったことです(私の質問を参照)。その上、URLのせいで、ストアビューのコードを不正に使用する必要がありませんでした。

私は頻繁に推奨される「サブフォルダーを作成してシンボリックリンクを作成する」というヒントを使用して小さなテストを行いましたが、うまくいくかもしれません。よろしければご確認ください。

  • サブフォルダ/ ca /​​を作成します
  • サブフォルダー内にシンボリックリンクを作成します
    • ../app
    • ../errors
    • ../includes
    • ../index.php
    • ../js
    • ../lib
    • ../メディア
    • ../肌
    • ../var
    • (必要に応じて他のディレクトリを追加します)
  • / ca /​​のvHost設定を編集します(または.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
はい、コアファイルを編集する場合。
Matthias Zeis 2013

@MatthiasZeisは受け入れに時間がかかりすぎて申し訳ありません!時々私はSEの通知を見失い、それらを未読としてマークするのは難しいです。回答を承認済みとしてマークするのに時間がかかる場合は、Twitterで遠慮なくpingしてください。少なくともツイッターを使用すれば、ツイートをお気に入りに追加して、いつでも戻ってくるようにできます。申し訳ありませんが、ここで助けてくれてありがとう!正解です。
kalenjordan 2014

心配ない!お役に立ててよかったです。
Matthias Zeis 14

2
すばらしいアドバイスです!2つの可能な簡略化:1)サブディレクトリ用に個別のvHost構成または.htaccessファイルを作成するため、条件なしでストアビューを簡単に初期化できますSetEnv MAGE_STORE_VIEW caRewriteBase一方、通常は必要ありません。2)ベースリンクURLを/ ca /​​に設定し、デフォルトのベースURL構成のままにしておく場合は、シンボリックリンクをindex.phpおよびappに設定するだけで十分です
Fabian Schmengler


1

mzeisの回答fschmenglerのコメントに基づいて、KISSによる方法は次のとおりです。

  1. サブディレクトリを作成しますcamkdir 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をセットアップして、使用する「website / store」をmagentoに指示します。

この方法では、サブドメインのWebサイトの下に複数の「ストア」と「ビュー」をすべて同じmagentoインストールに含めることができます。

  • 設定は、[システム]> [構成]> [一般] / [Web]にあります
  • 安全でない。ベース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>

これは追加の「ca」ストアApache構成です

<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ファイル(app / code / localモジュール内)の1つに追加します。

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

この方法で、ストアビューごとに[URLにストアコードを追加]オプションを選択できます。


あなたはそれを選択することができます。しかし、それが実際に機能することを確信していますか?
Fabian Schmengler、2015

はい、magento 1.9.xおよびmagento EE 1.13.xでテスト
nverhoye

これが実際にうまくいけば素晴らしいと思いますが、私は1つのWebサイトと複数のストアビューの設定でこれを機能させることができませんでした。CE 1.9.2.3でテスト済み。
Aad Mathijssen 2016

私には効かない
Visakh B Sujathan 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.