web-dev-qa-db-ja.com

WordPressの多言語ウェブサイトのドメインとフォルダ

回答して編集しました!

私はexample.comにWordpressを1つインストールしています。

私はこのウェブサイトに多言語システムを追加するためにPolylangプラグインを使います。私は16の言語を持っています、そしてそれはフランス語のためにexample.com/fr、ドイツ語のためにexample.com/deなどを使うように設定されています...

韓国語と日本のドメイン名を使いたい。 example.com/jpの代わりに、example.jpでウェブサイトを入手したいです。

私はサブドメインまたはドメイン上の他の言語を動かさずに.htaccessでこれを行う方法を見つけようとしています。

これは私が持っているものですが、私はexample.jp/page/に行く場合は私はexample.com/ja/page/にリダイレクトされますあなたはこのリダイレクトを隠す方法を知っていますか?

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_Host} ^(www\.)?example\.jp$
RewriteRule (.*) http://example.com/ja/$1 [R=302,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

あなたが必要であれば別の情報は、ドメインがCNAMEを使用している、と私はWPエンジンホスティングにいる。パーマリンクについては、現在のサブディレクトリリンクシステムをクリアするためにそれらをフィルタに渡すことができます。

御時間ありがとうございます !

編集:答えで説明されているように、CNAMEとサーバーファイルシステムは私に必要なものすべてを与えてくれます。私が探しているものを達成するために.htaccessを使う必要はありません。

2
Elex

内部リンクをすでに更新していて、example.jpがファイルシステム上のexample.comと同じ場所を指している(CNAMEおよび適切なサーバー設定の変更によって)場合は、必ずしもrewrite /は必要ありませんexample.comは同じファイルにアクセスするため、からexample.jpへ。rewriteを別のドメインに変更しようとすると、とにかく暗黙的に外部リダイレクトが起動されます(RディレクティブにRewriteRuleフラグを指定したかどうかにかかわらず)。

したがって、これをexample.jpドメインの書き換えに変更するには、次のようにします。

RewriteCond %{HTTP_Host} ^(www\.)?example\.jp
RewriteRule (.*) /ja/$1 [L]

(なぜsubstitution文字列でjaを使っているのですか - それはタイプミスですか?あなたの質問で前述したようにそれはjpであるべきではありませんか?)

ただし、他のディレクティブがあるかどうかによっては、これが書き換えループを引き起こす可能性があります。だから、あなたはおそらくこれを防ぐために条件を追加する必要があるでしょう。例えば:

RewriteCond %{REQUEST_URI} !^/ja/
RewriteCond %{HTTP_Host} ^(www\.)?example\.jp
RewriteRule (.*) /ja/$1 [L]

追加のRewriteCondディレクティブは、要求されたURLがすでに!で始まっていない(/ja/プレフィックス)ことを保証します。

代わりにRewriteRulepatternをチェックして/ja/ URLを書き換えるのを避けるほうが効率的です。例えば:

RewriteCond %{HTTP_Host} ^(www\.)?example\.jp
RewriteRule !^ja/ /ja%{REQUEST_URI} [L]

現在、RewriteRuleは、URLが/ja/を開始しない場合にのみ処理され、everyrequest(つまり.*)の代わりに処理されます。

しかし、WordPressはまだホスト名を正規化しようとする可能性がありますか?すなわち。 WordPress自身がexample.comへの外部リダイレクトを発行する可能性があります。このような場合は、WordPressでこれを上書きするか、mod_proxyを使用してreverse proxyを実装する必要があります。この場合、理想的にはサーバー設定にアクセスできます。

1
DocRoot