原本通过.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;
}
});
暂时保持观望状态
网站地图使用了以下网站提供的服务
