diff --git a/pywb/rewrite/content_rewriter.py b/pywb/rewrite/content_rewriter.py index ca0275bf..98c6d39a 100644 --- a/pywb/rewrite/content_rewriter.py +++ b/pywb/rewrite/content_rewriter.py @@ -524,7 +524,7 @@ class RewriteInfo(object): if not self.text_type: return False - if self.url_rewriter.wburl.mod == 'id_': + if self.is_identity(): return False if self.url_rewriter.rewrite_opts.get('is_ajax'): @@ -537,9 +537,11 @@ class RewriteInfo(object): return True + def is_identity(self): + return self.url_rewriter.wburl.mod in ('id_', 'ir_') + def is_url_rw(self): if self.url_rewriter.wburl.mod in ('id_', 'bn_', 'wkrf_'): return False return True - diff --git a/pywb/rewrite/default_rewriter.py b/pywb/rewrite/default_rewriter.py index a584774f..206a9c3c 100644 --- a/pywb/rewrite/default_rewriter.py +++ b/pywb/rewrite/default_rewriter.py @@ -102,6 +102,7 @@ class DefaultRewriter(BaseContentRewriter): super(DefaultRewriter, self).__init__(rules_file, replay_mod) self.all_rewriters = copy.copy(self.DEFAULT_REWRITERS) + self.add_prefer_mod('raw', 'ir_') self.add_prefer_mod('raw', 'id_') self.add_prefer_mod('banner-only', 'bn_') self.add_prefer_mod('rewritten', replay_mod) diff --git a/tests/test_integration.py b/tests/test_integration.py index 53440109..08d6d473 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -138,7 +138,19 @@ class TestWbIntegration(BaseConfigTest): def test_replay_redirect(self, fmod): resp = self.get('/pywb/2014{0}/http://www.iana.org/domains/example', fmod) - assert resp.headers['Location'].startswith('/pywb/2014{0}/'.format(fmod)) + assert resp.headers['Location'] == '/pywb/2014{0}/http://www.iana.org/domains/reserved'.format(fmod) + assert resp.status_code == 302 + + def test_replay_redirect_id(self): + resp = self.get('/pywb/2014id_/http://www.iana.org/domains/example', fmod) + print(resp.headers['Location']) + assert resp.headers['Location'] == '/domains/reserved' + assert resp.status_code == 302 + + def test_replay_redirect_ir(self): + resp = self.get('/pywb/2014ir_/http://www.iana.org/domains/example', fmod) + print(resp.headers['Location']) + assert resp.headers['Location'] == '/pywb/2014ir_/http://www.iana.org/domains/reserved' assert resp.status_code == 302 def test_replay_fuzzy_1(self, fmod): @@ -224,6 +236,17 @@ class TestWbIntegration(BaseConfigTest): # original unrewritten url present assert '"http://www.iana.org/domains/example"' in resp.text + def test_replay_identity_1_ir(self): + resp = self.testapp.get('/pywb/20140127171251ir_/http://example.com/') + + # no wb header insertion + assert 'wombat.js' not in resp.text + + assert resp.content_length == 1270, resp.content_length + + # original unrewritten url present + assert '"http://www.iana.org/domains/example"' in resp.text + def test_replay_identity_2_arcgz(self): resp = self.testapp.get('/pywb/20140216050221id_/http://arc.gz.test.example.com/')