Handle relative links when parsing HTML.

This commit is contained in:
CalDescent 2021-06-23 09:26:41 +01:00
parent 39f5dce51c
commit b65c7a75fe

View File

@ -212,15 +212,17 @@ public class WebsiteResource {
Elements href = document.select("[href]"); Elements href = document.select("[href]");
for (Element element : href) { for (Element element : href) {
String elementHtml = element.attr("href"); String elementHtml = element.attr("href");
if (elementHtml.startsWith("/") && !elementHtml.startsWith("//")) { if (!elementHtml.startsWith("http") && !elementHtml.startsWith("//")) {
element.attr("href", "/site/" +resourceId + element.attr("href")); String slash = (elementHtml.startsWith("/") ? "" : File.separator);
element.attr("href", "/site/" +resourceId + slash + element.attr("href"));
} }
} }
Elements src = document.select("[src]"); Elements src = document.select("[src]");
for (Element element : src) { for (Element element : src) {
String elementHtml = element.attr("src"); String elementHtml = element.attr("src");
if (elementHtml.startsWith("/") && !elementHtml.startsWith("//")) { if (!elementHtml.startsWith("http") && !elementHtml.startsWith("//")) {
element.attr("src", "/site/" +resourceId + element.attr("src")); String slash = (elementHtml.startsWith("/") ? "" : File.separator);
element.attr("src", "/site/" +resourceId + slash + element.attr("src"));
} }
} }
return document.html().getBytes(); return document.html().getBytes();