다국어화를 .htaccess로 가상 폴더로 처리하고 있었는데
sitemap.xml을 각 언어별로 구글에 등록했는데 에러가 발생하기 시작했다
잠시 지켜봤는데 검색에 노출되지 않는 것 같아서 대응책을 마련했습니다
.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;
}
});
다시 한동안 관망 상태
사이트맵은 아래 사이트를 이용하고 있습니다
