nginx 上のシンボリックリンクされたサブディレクトリとして多言語ストアが「ページへのルートがありません」を返す

magento.stackexchange https://magento.stackexchange.com//questions/64702

質問

を使用して多言語ストアをセットアップする必要がありました。 subdirectory/symlink 説明された方法 ここ. 。(その理由は@下部をお読みください)

どうやってやったのか。 Index.php をサブディレクトリにコピーし、すべてのフォルダーにシンボリックリンクを作成しました。の base url に設定されました domain.com/en

問題/質問ここで、domain.com/en を開くと Web サイトが表示され、英語版が表示されます。唯一の問題は、すべてのカテゴリと製品のリンクで「ページへのルートがありません」エラーが発生することです。カテゴリや製品を表示する代わりに。さて、どうしてこんなことがあり得るでしょうか?

それで https://domain.com/en/funkyshoes カテゴリ funkyshoes は開きませんし、funkyshoes も開きません https://domain.com/funkyshoes そのことについては。https://domain.com/en/funkyshoes 戻り値 => no route to page https://domain.com/funkyshoes 戻り値 => https://domain.com/en


なぜだめですか?複数のマルチストアがあり、すべてのストアに en/de/fr のような lang store_code を与えることはできません。また、ストアごとに異なるドメインを持つマルチストアが 1 つあり、もう 1 つはメイン ドメインからの /en、/de、/fr メソッドを使用しているためです。 。

役に立ちましたか?

解決 2

さらに優れた解決策は次のとおりです。

location / { try_files $uri $uri/ @rewrite; } location @rewrite { rewrite /(../)? /$1index.php?$args; }

カタログ|チェックアウト|顧客に対して特別な場所のルールがあったからです。問題は、すべてが @rewrite を参照していることです。この方法では、/en とその後の /fr および /de に個別に一致するように設定されているすべての位置コマンドを書き直す必要がありました。

そこで、最初に / をテストし、次に / (2 文字のコード) をテストする最も単純なフォールバック リライトを思いつきました。そしてそれに基づいて書き直す

うまくいくようです

さらに、store_code ルックアップを変更する必要があります。/en のため、http_host 変数またはサーバー変数は機能しなくなります。

考えられる解決策はここにあります。https://stackoverflow.com/questions/30078679/nginx-conf-w-multiple-maps-to-same-variable

他のヒント

これはNginxの問題です。

これをconfファイルに追加すると、問題が解決しました

location /en {
 rewrite ^/en(.*)$ /en/index.php last;
}
.

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top