diff --git a/src/main/java/run/halo/sitemap/SitemapPluginConfig.java b/src/main/java/run/halo/sitemap/SitemapPluginConfig.java index 1989351..7f366c8 100644 --- a/src/main/java/run/halo/sitemap/SitemapPluginConfig.java +++ b/src/main/java/run/halo/sitemap/SitemapPluginConfig.java @@ -3,6 +3,7 @@ import static org.springframework.web.reactive.function.server.RequestPredicates.GET; import static org.springframework.web.reactive.function.server.RequestPredicates.accept; +import java.nio.charset.StandardCharsets; import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.context.annotation.Bean; @@ -33,9 +34,12 @@ RouterFunction sitemapRouterFunction(CachedSitemapGetter cachedS var options = SitemapGeneratorOptions.builder() .siteUrl(url) .build(); + var xmlMediaType = new MediaType(MediaType.TEXT_XML, StandardCharsets.UTF_8); return cachedSitemapGetter.get(options) + .filter(sitemap -> !sitemap.isBlank()) .flatMap(sitemap -> ServerResponse.ok() - .contentType(MediaType.TEXT_XML).bodyValue(sitemap)); + .contentType(xmlMediaType).bodyValue(sitemap)) + .switchIfEmpty(ServerResponse.noContent().build()); } ); } diff --git a/src/main/java/run/halo/sitemap/UrlUtils.java b/src/main/java/run/halo/sitemap/UrlUtils.java index c633eb8..5dc4a25 100644 --- a/src/main/java/run/halo/sitemap/UrlUtils.java +++ b/src/main/java/run/halo/sitemap/UrlUtils.java @@ -20,11 +20,11 @@ public final class UrlUtils { */ public static String escapeSitemapUrl(String url) { Assert.notNull(url, "The url must not be null"); - return url.replaceAll("&", "&") - .replaceAll("'", "'") - .replaceAll("\"", """) - .replaceAll(">", ">") - .replaceAll("<", "<"); + return url.replace("&", "&") + .replace("'", "'") + .replace("\"", """) + .replace(">", ">") + .replace("<", "<"); } public static URI toURI(String s) {