diff --unified -u -r urlgrabber-3.9.1.orig/urlgrabber/mirror.py urlgrabber-3.9.1/urlgrabber/mirror.py --- urlgrabber-3.9.1.orig/urlgrabber/mirror.py 2014-09-16 14:44:54.582048746 +0200 +++ urlgrabber-3.9.1/urlgrabber/mirror.py 2014-09-16 14:49:24.138034099 +0200 @@ -88,6 +88,7 @@ import random +import urlparse import thread # needed for locking to make this threadsafe from grabber import URLGrabError, CallbackObject, DEBUG @@ -366,11 +367,12 @@ # by overriding the configuration methods :) def _join_url(self, base_url, rel_url): - if base_url.endswith('/') or rel_url.startswith('/'): - return base_url + rel_url + (scheme, netloc, path, query, fragid) = urlparse.urlsplit(base_url) + if path.endswith('/') or rel_url.startswith('/'): + return urlparse.urlunsplit((scheme, netloc, path + rel_url, query, fragid)) else: - return base_url + '/' + rel_url - + return urlparse.urlunsplit((scheme, netloc, path + '/' + rel_url, query, fragid)) + def _mirror_try(self, func, url, kw): gr = GrabRequest() gr.func = func