@@ -28,10 +28,28 @@ export async function GET(context: APIContext) {
2828 . map ( line => JSON . parse ( line ) )
2929 . sort ( ( a , b ) => new Date ( b . dataApertura ) . getTime ( ) - new Date ( a . dataApertura ) . getTime ( ) ) ;
3030
31+ // Costruisci il site URL corretto come fanno le altre pagine
32+ const siteUrl = ( ( ) => {
33+ const site = context . site ?. toString ( ) || '' ;
34+ const baseUrl = import . meta. env . BASE_URL || '/' ;
35+
36+ // Rimuovi trailing slash dal site
37+ const cleanSite = site . replace ( / \/ $ / , '' ) ;
38+
39+ // Gestisci il base URL: se è solo '/', non aggiungerlo
40+ let cleanBase = '' ;
41+ if ( baseUrl !== '/' ) {
42+ cleanBase = baseUrl . startsWith ( '/' ) ? baseUrl : `/${ baseUrl } ` ;
43+ cleanBase = cleanBase . endsWith ( '/' ) ? cleanBase . slice ( 0 , - 1 ) : cleanBase ;
44+ }
45+
46+ return `${ cleanSite } ${ cleanBase } ` ;
47+ } ) ( ) ;
48+
3149 return rss ( {
3250 title : 'Referendum e Iniziative Popolari - Ultime Iniziative' ,
3351 description : 'Feed RSS delle ultime iniziative e referendum popolari in Italia' ,
34- site : context . site ?? 'https://ondata.github.io/referendum_astro/' ,
52+ site : siteUrl ,
3553 items : initiatives . map ( ( initiative ) => {
3654 const officialUrl = `https://firmereferendum.giustizia.it/referendum/open/dettaglio-open/${ initiative . id } ` ;
3755
@@ -59,11 +77,29 @@ export async function GET(context: APIContext) {
5977 } catch ( error ) {
6078 console . error ( 'Errore nella generazione del feed RSS:' , error ) ;
6179
80+ // Costruisci il site URL corretto anche per l'errore
81+ const siteUrl = ( ( ) => {
82+ const site = context . site ?. toString ( ) || '' ;
83+ const baseUrl = import . meta. env . BASE_URL || '/' ;
84+
85+ // Rimuovi trailing slash dal site
86+ const cleanSite = site . replace ( / \/ $ / , '' ) ;
87+
88+ // Gestisci il base URL: se è solo '/', non aggiungerlo
89+ let cleanBase = '' ;
90+ if ( baseUrl !== '/' ) {
91+ cleanBase = baseUrl . startsWith ( '/' ) ? baseUrl : `/${ baseUrl } ` ;
92+ cleanBase = cleanBase . endsWith ( '/' ) ? cleanBase . slice ( 0 , - 1 ) : cleanBase ;
93+ }
94+
95+ return `${ cleanSite } ${ cleanBase } ` ;
96+ } ) ( ) ;
97+
6298 // Ritorna un feed vuoto in caso di errore
6399 return rss ( {
64100 title : 'Referendum e Iniziative Popolari - Feed non disponibile' ,
65101 description : 'Errore nel caricamento delle iniziative' ,
66- site : context . site ?? 'https://ondata.github.io/referendum_astro/' ,
102+ site : siteUrl ,
67103 items : [ ] ,
68104 } ) ;
69105 }
0 commit comments