多言語化を.htaccessで仮想フォルダに飛ばしていたんだけど
sitemap.xmlを各言語に併せてGoogleに登録していたんだがエラーを出すようになってしまった
しばらく様子を見ていたんだけど検索に上がらなくなったようなので対応策をとった
.htaccessからWordPressのfunction.phpに変更して書いたのが次の項目
// 言語コード用の仮想URLを追加
function add_lang_rewrite_rules() {
add_rewrite_rule(
'^(ja|en|ko|cn|tw)/?$',
'index.php?lang=$matches[1]',
'top'
);
add_rewrite_rule(
'^(ja|en|ko|cn|tw)/(.*)/?$',
'index.php?lang=$matches[1]&pagename=$matches[2]',
'top'
);
}
add_action('init', 'add_lang_rewrite_rules');
// クエリ変数に lang を追加
function add_lang_query_var($vars) {
$vars[] = 'lang';
return $vars;
}
add_filter('query_vars', 'add_lang_query_var');
function get_current_lang() {
$lang = get_query_var('lang');
if (!$lang) {
return 'ja'; // デフォルト言語
}
return $lang;
}
add_action('template_redirect', function() {
if (is_admin()) return;
$request_uri = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
// sitemap.xml, robots.txt, CSS/JS/画像などは除外
if (preg_match('/.(xml|txt|css|js|png|jpg|jpeg|gif)$/i', $request_uri)) {
return;
}
// トップページ / のみ /ja/ にリダイレクト
if ($request_uri === '' || $request_uri === 'index.php') {
wp_redirect(home_url('/ja/'), 301);
exit;
}
});
またしばらく様子見状態
サイトマップは下のサイトを利用させていただいてます
