diff --git a/src/server/kiwix-serve.cpp b/src/server/kiwix-serve.cpp index 2e21cab..49f4636 100644 --- a/src/server/kiwix-serve.cpp +++ b/src/server/kiwix-serve.cpp @@ -806,8 +806,24 @@ static struct MHD_Response* handle_content(RequestContext* request) zim::Blob raw_content = entry.getBlob(); content = string(raw_content.data(), raw_content.size()); + /* Special rewrite URL in case of ZIM file use intern *asbolute* url like + * /A/Kiwix */ if (mimeType.find("text/html") != string::npos) { + pthread_mutex_lock(®exLock); + content = replaceRegex(content, + "$1$2" + rootLocation + "/" + humanReadableBookId + "/$3/", + "(href|src)(=[\"|\']{0,1})/([A-Z|\\-])/"); + content = replaceRegex(content, + "$1$2" + rootLocation + "/" + humanReadableBookId + "/$3/", + "(@import[ ]+)([\"|\']{0,1})/([A-Z|\\-])/"); + pthread_mutex_unlock(®exLock); introduceTaskbar(content, humanReadableBookId); + } else if (mimeType.find("text/css") != string::npos) { + pthread_mutex_lock(®exLock); + content = replaceRegex(content, + "$1$2" + rootLocation + "/" + humanReadableBookId + "/$3/", + "(url|URL)(\\([\"|\']{0,1})/([A-Z|\\-])/"); + pthread_mutex_unlock(®exLock); } bool deflated