web-dev-qa-db-ja.com

言語プレフィックスのあるURLをプレフィックスのない同じURLにリダイレクトする方法(デフォルト言語)

I18nモジュールをインストールしたので、日本語と英語の2つの言語を使用できます。日本語をデフォルトの言語に設定し、「言語言語ネゴシエーション」を「パスプレフィックスのみ」に設定しました。したがって、言語プレフィックスのないすべてのURLは、「en」のプレフィックスを持つ日本語ページと英語ページを表示します。

私がやりたいのは、一部のページを日本語のみで利用可能にする必要があるため、プレフィックス付きのURLの一部をプレフィックスなしの同じURLにリダイレクトすることです。たとえば、ユーザーがmy-site.com/en/cartを表示しようとすると、my-site.com/cartを使用不可にしたいため、ユーザーは自動的にmy-site.com/en/cartにリダイレクトされます。

path redirect を試しましたが、以下の2つのケースを設定しましたが、リダイレクトが機能しません

  1. 「Language」から「All languages」、「From」から「my-site.com/en/cart」、「To」から「my-site.com/cart」。

  2. 「Language」から「English」、「From」から「my-site.com/en/cart」、「To」から「my-site.com/cart」。

2
chinita7

以下の回答では、Webサイトの少なくとも一部でページマネージャ+パネルを使用している必要があります。私の意見では、彼らはとにかくすべきです(---)が、他の人は反対するでしょう。これらのモジュールはどちらもtoolsであり、ソリューションではないため、この回答では、これら2つのモジュールを調査して理解する必要があります。 優れたビデオチュートリアルへのリンク 。執筆時点では、これにはCtoolsの-devバージョンが必要です。

執筆時点では、以下の指示を機能させるために このCtoolsパッチ を適用する必要があります。

  1. リダイレクトするページfromがページマネージャによって管理されていることを確認します。このページには2つのバリアントがあります。
  2. 「HTTP応答」バリアントをカートへの301応答とともに追加します。 このステップの詳細は別の質問で 。このバリアントがtopmostであることが重要です。必要に応じて、後で並べ替えることができます。
  3. HTTPバリアントで、左側の[コンテキスト]タブに移動し、[言語]コンテキストを追加して、[現在の言語]を選択します。
  4. 「選択ルール」に移動し、「User:Language」==「English」を追加します。
  5. 2番目のバリアントを追加します。今回はPanelsバリアントです。
  6. 2番目のバリアントで、日本語ページの一部にしたいすべてのコンテンツを追加します。
1
Letharion

.htaccessにディレクティブを追加

RewriteRule ^en/(.*)$ http://my-site.com/$1 [L,R=301]
RewriteRule ^cn$ http://my-site.com [L,R=301]
0
wfy