@@ -17,15 +17,20 @@ class SitemapGenerator {
17
17
18
18
// 生成单个 URL 节点
19
19
generateUrlNode ( url , lang , metadata ) {
20
- const langCode = this . getLanguageCode ( lang ) ;
21
20
const normalizedUrl = url . startsWith ( '/' ) ? url . substring ( 1 ) : url ;
22
- const fullUrl = `${ langCode } /${ normalizedUrl } ` ;
21
+ const isI18nEnabled = isFeatureEnabled ( this . config , 'i18n' ) ;
22
+ const langCode = this . getLanguageCode ( lang ) ;
23
+
24
+ // 当启用国际化时才添加语言前缀
25
+ const fullUrl = isI18nEnabled ?
26
+ `${ langCode } /${ normalizedUrl } ` :
27
+ normalizedUrl ;
23
28
24
29
return ` <url>
25
30
<loc>${ this . baseUrl } /${ fullUrl } </loc>${ metadata ?. gitInfo ?. revision ?. lastModifiedTime ? `
26
31
<lastmod>${ metadata . gitInfo . revision . lastModifiedTime } </lastmod>` : '' }
27
- <changefreq>${ metadata . changefreq || ' weekly' } </changefreq>
28
- <priority>${ metadata . priority || ' 0.5' } </priority>
32
+ <changefreq>weekly</changefreq>
33
+ <priority>0.5</priority>
29
34
</url>` ;
30
35
}
31
36
@@ -36,13 +41,16 @@ class SitemapGenerator {
36
41
}
37
42
38
43
if ( item . href ) {
39
- const metadata = this . pages . get ( item . href ) || { } ;
44
+ // 将 /.html 转换为 /index.html
45
+ const normalizedHref = item . href === '/.html' ? '/index.html' : item . href ;
46
+
47
+ const metadata = this . pages . get ( normalizedHref ) || { } ;
40
48
41
49
const langCode = this . getLanguageCode ( lang ) ;
42
- const key = `${ langCode } :${ item . href } ` ;
50
+ const key = `${ langCode } :${ normalizedHref } ` ;
43
51
urls . set ( key , {
44
52
lang : langCode ,
45
- url : item . href ,
53
+ url : normalizedHref ,
46
54
metadata
47
55
} ) ;
48
56
}
@@ -57,9 +65,11 @@ class SitemapGenerator {
57
65
collectNavigationUrls ( ) {
58
66
const urls = new Map ( ) ;
59
67
const isI18nEnabled = isFeatureEnabled ( this . config , 'i18n' ) ;
68
+
69
+ // 如果没有启用国际化,则只使用空数组作为默认语言
60
70
const languages = isI18nEnabled
61
71
? ( this . config . languages || [ this . config . i18n ?. default || 'en' ] )
62
- : [ 'en ' ] ;
72
+ : [ '' ] ; // 改为空字符串,表示没有语言前缀
63
73
64
74
// 收集每种语言的 URL
65
75
for ( const lang of languages ) {
0 commit comments