WPMLで言語ディレクトリ(例: スペイン語の場合 http://example.com/es/)を選択できない場合、WPMLがそのURLにアクセスしようとしてエラーを受け取ったことが原因です。言語ディレクトリが機能することを確認するためにチェックできる項目は以下の通りです。
言語ディレクトリを機能させるために設定する必要がある項目は以下の通りです。
- URLリライトを有効化する。
- WordPressにフォルダーへの読み取りおよび書き込みアクセスを許可する。
- サイトが「きれいな」パーマリンク構造を使用していることを確認する。
おわかりのように、サーバー上に物理的なディレクトリを作成する必要はありません。言語をディレクトリに配置する選択は、URLのリライトを通じて可能になります。
WPMLが言語ディレクトリを有効化できるかを判断する方法
WPMLは、言語ディレクトリが機能するかを確認するテストコールへのアクセスを試みます。このテストコールは以下の通りです。
yourdomain/LANGUAGE/?____icl_validate_domain=1
たとえば、自社ドメイン(wpml.org)でスペイン語が有効になっているかを確認するには、ブラウザで以下のURLにアクセスします。
http://wpml.org/es/?____icl_validate_domain=1
これを行うと、空白のページが表示されます。ページを右クリックしてページのソースを表示を選択します。以下のコンテンツが表示されるはずです。
<!--http://wpml.org-->
これは、WordPressがこのURL構造へのアクセスを許可していることをWPMLに伝えます。このコールが成功した場合、WPMLはディレクトリごとの言語の使用を許可します。そうでない場合は、問題の原因を(ある程度)説明するメッセージが表示されます。
WPMLがエラーページを検出した場合、この機能を無効化し、無効化された理由の考えられる説明を含む赤いエラーメッセージを出力します。
重要: WPMLは、fopenコールを実行して検証URLにアクセスします。通常、これはブラウザの動作と似ていますが、同じではありません。サーバーでfopenが有効になっていることを確認してください。ブロックされないようにするには、PHP設定ファイルに以下を追加します。
SecFilterEngine Off
WordPressでのURLリライトの有効化の確認
URLリライトを有効にするために、WordPressはインストールされているフォルダーに.htaccessというファイルを作成します。デフォルト以外のURLを使用している場合、WordPressはこのファイルを作成します。このファイルには以下の内容が含まれている必要があります。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress存在しない場合は、作成してみてください。存在していても空の場合は、これらの内容をコピーして保存します。
URLをリライトできることの意味
URLリライトは、WordPressで集中的に使用される複雑なメカニズムです。これを機能させるには、Webサーバー(通常はApache)がURLをリライトできる必要があり、さらにWordPressにリライトロジックの管理が許可されている必要があります。
Apacheでは、mod-rewriteがURLリライトを行います。これはデフォルトで有効になっている非常に標準的なモジュールです。Apacheを使用していて言語ディレクトリを有効化できない場合は、サイトでmod-rewriteが有効になっているかを確認してください。確認方法がわからない場合は、ホスティングプロバイダーにメールを送信してください。以下の文面を使用できます。
ご担当者様使用したいWordPressプラグインでは、mod-rewriteモジュールが有効になっている必要があります。私のウェブサイト(http://example.com)でmod-rewriteが有効になっているか確認して教えていただけますか?
有効になっていると仮定すると、次にWordPressがURLの書き込みルールを制御できる必要があります。そのためには、WordPressがインストールされているフォルダーに書き込みできる必要があります。
WordPressのフォルダーへの読み取りおよび書き込みアクセスの確認
繰り返しになりますが、Apacheを使用している場合は、Apacheがどのユーザーで実行されているかを確認し、そのユーザーにWordPressがインストールされているフォルダーへの読み取りおよび書き込みアクセスを許可します。これは、FTPプログラム、シェル、またはメールを使用して行うことができます。
再度失礼いたします。もう1つお願いがあります。以下のディレクトリにWordPressをインストールしました。
YOUR_WP_INSTALL_DIRECTORY
Webサーバーがそこで読み取りと書き込みの両方を行えるように、ディレクトリ全体(再帰的)のファイル権限を変更していただけますか?WordPressが一部のファイルに書き込めるようにする必要があります。
これで、再度確認してください。
サイトでの「きれいな」パーマリンク構造の使用の確認
サイトでは「きれいな」パーマリンク構造を使用する必要があります。サイトのパーマリンク構造は、WordPressの設定で変更できます。
トラブルシューティング
CloudflareなどのCDNを使用している場合、HTMLコメントを削除することで、ディレクトリ内の言語が正しく機能するのを妨げる可能性があります。その結果、フロントエンドに問題がないにもかかわらず、
?____icl_validate_domain=1に関連する警告を示す誤検知エラーが表示される場合があります。
サポートが必要な場合
それでも機能しない場合は、WPMLサポートでご質問ください。