web-dev-qa-db-ja.com

すべてのノード(/ he /)に言語プレフィックスを付けます--- contribモジュールなしで可能ですか?

私は約500ページ(ノード、分類ページ、およびいくつかのビュー)を持つサイトをすべてヘブライ語で作成しています。

私は言うことからすべてのパスを作りたいです:

/node/example1
/taxonomy/categories/term1
/taxonomy/tags/tag1
/views/view1

/he/node/example1
/he/taxonomy/categories/term1
/he/taxonomy/tags/tag1
/he/views/view1

このサイトをサブサイト(サブドメインを持つ)にする最初の段階として、すべてのページを対象にしたいと考えています。

これは、貢献モジュールなしでDrupal 8で可能ですか?つまり、たとえばPathautoをインストールせずに?

1
user16289

これは、Drupalルートディレクトリにある.htaccessファイルに書き込まれる書き換えルールです。

RewriteEngine on RewriteCond %{REQUEST_URI} !/he RewriteRule ^(.*) http://www.domain.com/he%{REQUEST_URI} [L,R=301]

それはあなたにとって理にかなっています。

3
Ashish Deynap

言語ごとに異なるサブドメインが必要な場合は、Drupalがサブドメインから言語コードを検出でき、URLプレフィックスを追加する必要がないはずです。サブドメインhe.example.comをセットアップし、他の言語と言語選択ダイアログをexample.comに追加するまで、メインサイトからのリクエストをheサブドメインにリダイレクトすることによる最初のステップ(サブなし) -ドメイン)。

こんにちは!私は次の解決策を見ることができます:

ソリューション1:ノードパスの変更

  • Pathauto(使用したくない)を使用して、ノード接頭辞を/he/に設定できます。
  • 1回限りのスクリプトを実行してすべてのノードURLエイリアスにプレフィックスを追加し、将来的には手動で/heプレフィックスを追加します。

ソリューション2:.htaccess

.htaccessを使用して、/he/* URLを/*として解釈するようにすべてのURLを書き換えます。しかし、これは他のパスにもプレフィックスを適用する可能性があります-ノードに対してのみこれを行うのは、既存のURLによっては難しい場合があります。

RewriteEngine on
RewriteCond %{REQUEST_URI} !/he
RewriteRule ^(.*) http://www.domain.com/he%{REQUEST_URI} [L,R=301]

注: Ashish Deynapの回答からコピーされたコードの抜粋。

ただし、次の理由により、.htaccessリダイレクトは可能な限り避けた方がよいと聞きました。

  • .htaccessは、Drupalバージョンで更新される可能性があります。
  • .htaccessのルールは、すべてのリクエストに対して評価されます!ルールが多いほど、サーバーがそれらの評価に費やす時間が長くなります。

それが役に立てば幸い。

2
Jigarius

これを言語接頭辞に固有のものにしているので、コアモジュール「Language」を使用することをお勧めします。これは、(a)コアであり、(b)管理が容易であるためです。以下を試してください:

  1. 「言語」(言語)モジュールを有効にします。デフォルトでは有効になっていません
  2. サイトを明示的に多言語にしない限り、コンテンツはヘブライ語ですが、サイトのデフォルトの言語は英語です。そうでない場合は、これを無視できます。
  3. URLの言語接頭辞を機能させるには、2つの言語が必要です。すでに2つの言語がある場合、彼とen、これはスキップできます。 admin/config/regional/languageに移動し、2番目の言語をDrupalインスタンス(どちらでもかまいません)に追加します)=>これにより、言語プレフィックスの使用が強制されます(次を参照)ステップ)。
  4. Admin/config/regional/language/detectionに移動して、「URL」検出方法を構成します。これは実際にアクティブ化され、他のすべてのオプションに先行する必要があります。
  5. デフォルト言語のパス接頭辞を「彼」に設定します。
  6. キャッシュを保存してクリアします。すべてのDrupalパスには「he」というプレフィックスが付きます。

幸運を!

注:既存のURLは引き続き有効ですが、ナビゲーションへの数回のクリックでURLの先頭に「彼」を付ける必要があります。

2

要件はサブサイト(サブドメインを含む)の場合です。サブドメインを「彼」としてウェブサイトを設定することをお勧めします。マルチサイトを作成するには、リンクの最初の回答に記載されている手順に従ってください Drupal 8:サブディレクトリ内のマルチサイトが機能していません

お役に立てば幸いです。

1
developer

これを行うには、Drupalルートディレクトリにある.htaccessファイルに rewrite rule と書き込みます。ルートディレクトリです。 this ans を確認してください。

1
Yogesh