diff --git a/kuma/redirects/redirects.py b/kuma/redirects/redirects.py index 230b54ecc4c..77adddb7d07 100644 --- a/kuma/redirects/redirects.py +++ b/kuma/redirects/redirects.py @@ -775,602 +775,60 @@ def locale_redirect(pattern, to, prepend_locale=True, **kwargs): permanent=False), ] -zone_redirectpatterns = [ - # The redirects for the case when the locale is not specified - # for a zone. It must be handled here, since for the cases when - # LocaleMiddleware handles the 404 response and redirects to the - # proper locale, it fails because the path is considered invalid. - redirect( - r'^(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^(?:docs/)?Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/docs/Web/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^Learn(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/docs/Learn'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^(?:docs/)?Marketplace(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/docs/Mozilla/Marketplace'), - permanent=False, - decorators=shared_cache_control_for_zones), - - # The locale-specific redirects for the "Add-ons" zone. - redirect( - r'^af/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/af/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ar/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ar/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^bn-BD/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/bn-BD/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^bn-IN/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/bn-IN/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ca/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ca/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^cs/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/cs/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^de/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/de/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^el/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/el/docs/Mozilla/Πρόσθετα'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^en-US/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/en-US/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^es/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/es/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^fa/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/fa/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^fr/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/fr/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^hu/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/hu/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^id/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/id/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^it/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/it/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ja/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ja/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ko/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ko/docs/Mozilla/애드온들'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ms/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ms/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^nl/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/nl/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^pl/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/pl/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^pt-BR/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/pt-BR/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^pt-PT/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/pt-PT/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ro/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ro/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ru/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ru/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^sv-SE/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/sv-SE/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^th/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/th/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^uk/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/uk/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^vi/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/vi/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^zh-CN/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/zh-CN/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^zh-TW/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/zh-TW/docs/Mozilla/Add-ons'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^tr/(?:docs/)?Add-ons(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/tr/docs/Mozilla/Eklentiler'), - permanent=False, - decorators=shared_cache_control_for_zones), - - # The locale-specific redirects for the "Firefox" zone. - redirect( - r'^af/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/af/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ar/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ar/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^az/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/az/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^bm/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/bm/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^bn-BD/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/bn-BD/docs/Mozilla/ফায়ারফক্স'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^bn-IN/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/bn-IN/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ca/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ca/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^cs/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/cs/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^de/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/de/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ee/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ee/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^el/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/el/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^en-US/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/en-US/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^es/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/es/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ff/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ff/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^fi/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/fi/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^fr/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/fr/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^fy-NL/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/fy-NL/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ga-IE/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ga-IE/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ha/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ha/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^he/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/he/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^hi-IN/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/hi-IN/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^hr/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/hr/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^hu/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/hu/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^id/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/id/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ig/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ig/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^it/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/it/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ja/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ja/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ka/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ka/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ko/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ko/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ln/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ln/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ml/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ml/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ms/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ms/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^my/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/my/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^nl/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/nl/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^pl/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/pl/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^pt-BR/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/pt-BR/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^pt-PT/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/pt-PT/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ro/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ro/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ru/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ru/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^son/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/son/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^sq/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/sq/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^sv-SE/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/sv-SE/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^sw/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/sw/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ta/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ta/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^th/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/th/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^tl/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/tl/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^tr/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/tr/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^vi/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/vi/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^wo/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/wo/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^xh/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/xh/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^yo/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/yo/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^zh-CN/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/zh-CN/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^zh-TW/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/zh-TW/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^zu/(?:docs/)?Firefox(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/zu/docs/Mozilla/Firefox'), - permanent=False, - decorators=shared_cache_control_for_zones), - - # The locale-specific redirects for the "Apps" zone. - redirect( - r'^bn-BD/Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/bn-BD/docs/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^de/Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/de/docs/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^en-US/(?:docs/)?Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/en-US/docs/Web/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^es/(?:docs/)?Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/es/docs/Web/Aplicaciones'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^fa/(?:docs/)?Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/fa/docs/Web/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^fr/(?:docs/)?Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/fr/docs/Web/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^it/Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/it/docs/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ja/(?:docs/)?Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ja/docs/Web/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ko/Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ko/docs/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^pt-BR/Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/pt-BR/docs/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ru/Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ru/docs/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ta/(?:docs/)?Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ta/docs/Web/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^th/(?:docs/)?Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/th/docs/Web/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^zh-CN/(?:docs/)?Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/zh-CN/docs/Web/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^zh-TW/(?:docs/)?Apps(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/zh-TW/docs/Web/Apps'), - permanent=False, - decorators=shared_cache_control_for_zones), - - # The locale-specific redirects for the "Learn" zone. - redirect( - r'^ca/Learn(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ca/docs/Learn'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^de/Learn(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/de/docs/Learn'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^fr/Apprendre(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/fr/docs/Apprendre'), - permanent=False, - decorators=shared_cache_control_for_zones), - - # The locale-specific redirects for the "Marketplace" zone. - redirect( - r'^de/(?:docs/)?Marketplace(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/de/docs/Mozilla/Marketplace'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^en-US/(?:docs/)?Marketplace(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/en-US/docs/Mozilla/Marketplace'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^es/(?:docs/)?Marketplace(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/es/docs/Mozilla/Marketplace'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^fa/(?:docs/)?Marketplace(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/fa/docs/Mozilla/بازار'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^fr/(?:docs/)?Marketplace(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/fr/docs/Mozilla/Marketplace'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^it/(?:docs/)?Marketplace(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/it/docs/Mozilla/Marketplace'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^ja/(?:docs/)?Marketplace(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/ja/docs/Mozilla/Marketplace'), - permanent=False, - decorators=shared_cache_control_for_zones), - redirect( - r'^zh-CN/(?:docs/)?Marketplace(?:/?|(?P[/$].+))$', - get_sub_path_handler(u'/zh-CN/docs/Mozilla/Marketplace'), - permanent=False, - decorators=shared_cache_control_for_zones), -] +zone_redirects = ( + (u'Add-ons', u'Mozilla/Add-ons', ('af', 'ar', 'bn-BD', 'bn-IN', 'ca', + 'cs', 'de', 'en-US', 'es', 'fa', + 'fr', 'hu', 'id', 'it', 'ja', + 'ms', 'nl', 'pl', 'pt-BR', 'pt-PT', + 'ro', 'ru', 'sv-SE', 'th', 'uk', + 'vi', 'zh-CN', 'zh-TW', None)), + (u'Add-ons', u'Mozilla/Πρόσθετα', ('el',)), + (u'Add-ons', u'Mozilla/애드온들', ('ko',)), + (u'Add-ons', u'Mozilla/Eklentiler', ('tr',)), + (u'Firefox', u'Mozilla/Firefox', ('af', 'ar', 'az', 'bm', 'bn-IN', 'ca', + 'cs', 'de', 'ee', 'el', 'en-US', 'es', + 'ff', 'fi', 'fr', 'fy-NL', 'ga-IE', 'ha', + 'he', 'hi-IN', 'hr', 'hu', 'id', 'ig', + 'it', 'ja', 'ka', 'ko', 'ln', 'ml', + 'ms', 'my', 'nl', 'pl', 'pt-BR', 'pt-PT', + 'ro', 'ru', 'son', 'sq', 'sv-SE', 'sw', + 'ta', 'th', 'tl', 'tr', 'vi', 'wo', + 'xh', 'yo', 'zh-CN', 'zh-TW', 'zu', + None)), + (u'Firefox', u'Mozilla/ফায়ারফক্স', ('bn-BD',)), + (u'Apps', u'Web/Apps', ('en-US', 'fa', 'fr', 'ja', 'ta', 'th', 'zh-CN', + 'zh-TW', None)), + (u'Apps', u'Web/Aplicaciones', ('es',)), + (u'Apps', u'Apps', ('bn-BD', 'de', 'it', 'ko', 'pt-BR', 'ru')), + (u'Learn', u'Learn', ('ca', 'de', None)), + (u'Apprendre', u'Apprendre', ('fr',)), + (u'Marketplace', u'Mozilla/Marketplace', ('de', 'en-US', 'es', 'fr', 'it', + 'ja', 'zh-CN', None)), + (u'Marketplace', u'Mozilla/بازار', ('fa',)), +) + +zone_pattern_fmt = r'^{prefix}{zone_root_pattern}(?:/?|(?P[/$].+))$' +sub_path_fmt = u'/{prefix}docs/{wiki_slug}' + +zone_redirectpatterns = [] +for zone_root, wiki_slug, locales in zone_redirects: + for locale in locales: + zone_root_pattern = zone_root + if zone_root != wiki_slug: + zone_root_pattern = '(?:docs/)?' + zone_root_pattern + # NOTE: The redirect for the case when there is no locale for a zone + # must be handled here, because if we let LocaleMiddleware handle the + # 404 response and redirect to the proper locale, the path would be + # considered invalid. + prefix = (locale + '/') if locale else '' + pattern = zone_pattern_fmt.format(prefix=prefix, + zone_root_pattern=zone_root_pattern) + sub_path = sub_path_fmt.format(prefix=prefix, wiki_slug=wiki_slug) + zone_redirectpatterns.append(redirect( + pattern, + get_sub_path_handler(sub_path), + permanent=False, + decorators=shared_cache_control_for_zones)) redirectpatterns = scl3_redirectpatterns + zone_redirectpatterns + [ locale_redirect( diff --git a/tests/headless/map_301.py b/tests/headless/map_301.py index 0c7023a40af..dbfe5909db1 100644 --- a/tests/headless/map_301.py +++ b/tests/headless/map_301.py @@ -355,3429 +355,80 @@ url_test('/zh_tw/docs/AJAX', '/zh-TW/docs/AJAX', status_code=302), ))) -ZONE_REDIRECT_URLS = list(flatten(( - url_test(u'/Add-ons', - u'/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Add-ons/', - u'/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Add-ons/WebExtensions', - u'/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Add-ons$edit', - u'/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/docs/Add-ons', - u'/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - - url_test(u'/af/Add-ons', - u'/af/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/af/Add-ons/', - u'/af/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/af/Add-ons/WebExtensions', - u'/af/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/af/Add-ons$edit', - u'/af/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/af/docs/Add-ons', - u'/af/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ar/Add-ons', - u'/ar/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ar/Add-ons/', - u'/ar/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ar/Add-ons/WebExtensions', - u'/ar/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ar/Add-ons$edit', - u'/ar/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ar/docs/Add-ons', - u'/ar/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Add-ons', - u'/bn-BD/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Add-ons/', - u'/bn-BD/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Add-ons/WebExtensions', - u'/bn-BD/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Add-ons$edit', - u'/bn-BD/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/docs/Add-ons', - u'/bn-BD/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-IN/Add-ons', - u'/bn-IN/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-IN/Add-ons/', - u'/bn-IN/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-IN/Add-ons/WebExtensions', - u'/bn-IN/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-IN/Add-ons$edit', - u'/bn-IN/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-IN/docs/Add-ons', - u'/bn-IN/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Add-ons', - u'/ca/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Add-ons/', - u'/ca/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Add-ons/WebExtensions', - u'/ca/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Add-ons$edit', - u'/ca/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/docs/Add-ons', - u'/ca/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/cs/Add-ons', - u'/cs/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/cs/Add-ons/', - u'/cs/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/cs/Add-ons/WebExtensions', - u'/cs/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/cs/Add-ons$edit', - u'/cs/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/cs/docs/Add-ons', - u'/cs/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Add-ons', - u'/de/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Add-ons/', - u'/de/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Add-ons/WebExtensions', - u'/de/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Add-ons$edit', - u'/de/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/docs/Add-ons', - u'/de/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/el/Add-ons', - u'/el/docs/Mozilla/Πρόσθετα', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/el/Add-ons/', - u'/el/docs/Mozilla/Πρόσθετα', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/el/Add-ons/WebExtensions', - u'/el/docs/Mozilla/Πρόσθετα/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/el/Add-ons$edit', - u'/el/docs/Mozilla/Πρόσθετα$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/el/docs/Add-ons', - u'/el/docs/Mozilla/Πρόσθετα', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Add-ons', - u'/en-US/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Add-ons/', - u'/en-US/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Add-ons/WebExtensions', - u'/en-US/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Add-ons$edit', - u'/en-US/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/docs/Add-ons', - u'/en-US/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Add-ons', - u'/es/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Add-ons/', - u'/es/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Add-ons/WebExtensions', - u'/es/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Add-ons$edit', - u'/es/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/docs/Add-ons', - u'/es/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Add-ons', - u'/fa/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Add-ons/', - u'/fa/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Add-ons/WebExtensions', - u'/fa/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Add-ons$edit', - u'/fa/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/docs/Add-ons', - u'/fa/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Add-ons', - u'/fr/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Add-ons/', - u'/fr/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Add-ons/WebExtensions', - u'/fr/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Add-ons$edit', - u'/fr/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/docs/Add-ons', - u'/fr/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hu/Add-ons', - u'/hu/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hu/Add-ons/', - u'/hu/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hu/Add-ons/WebExtensions', - u'/hu/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hu/Add-ons$edit', - u'/hu/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hu/docs/Add-ons', - u'/hu/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/id/Add-ons', - u'/id/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/id/Add-ons/', - u'/id/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/id/Add-ons/WebExtensions', - u'/id/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/id/Add-ons$edit', - u'/id/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/id/docs/Add-ons', - u'/id/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Add-ons', - u'/it/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Add-ons/', - u'/it/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Add-ons/WebExtensions', - u'/it/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Add-ons$edit', - u'/it/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/docs/Add-ons', - u'/it/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Add-ons', - u'/ja/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Add-ons/', - u'/ja/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Add-ons/WebExtensions', - u'/ja/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Add-ons$edit', - u'/ja/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/docs/Add-ons', - u'/ja/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Add-ons', - u'/ko/docs/Mozilla/애드온들', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Add-ons/', - u'/ko/docs/Mozilla/애드온들', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Add-ons/WebExtensions', - u'/ko/docs/Mozilla/애드온들/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Add-ons$edit', - u'/ko/docs/Mozilla/애드온들$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/docs/Add-ons', - u'/ko/docs/Mozilla/애드온들', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ms/Add-ons', - u'/ms/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ms/Add-ons/', - u'/ms/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ms/Add-ons/WebExtensions', - u'/ms/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ms/Add-ons$edit', - u'/ms/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ms/docs/Add-ons', - u'/ms/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/nl/Add-ons', - u'/nl/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/nl/Add-ons/', - u'/nl/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/nl/Add-ons/WebExtensions', - u'/nl/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/nl/Add-ons$edit', - u'/nl/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/nl/docs/Add-ons', - u'/nl/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pl/Add-ons', - u'/pl/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pl/Add-ons/', - u'/pl/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pl/Add-ons/WebExtensions', - u'/pl/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pl/Add-ons$edit', - u'/pl/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pl/docs/Add-ons', - u'/pl/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Add-ons', - u'/pt-BR/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Add-ons/', - u'/pt-BR/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Add-ons/WebExtensions', - u'/pt-BR/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Add-ons$edit', - u'/pt-BR/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/docs/Add-ons', - u'/pt-BR/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-PT/Add-ons', - u'/pt-PT/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-PT/Add-ons/', - u'/pt-PT/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-PT/Add-ons/WebExtensions', - u'/pt-PT/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-PT/Add-ons$edit', - u'/pt-PT/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-PT/docs/Add-ons', - u'/pt-PT/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ro/Add-ons', - u'/ro/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ro/Add-ons/', - u'/ro/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ro/Add-ons/WebExtensions', - u'/ro/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ro/Add-ons$edit', - u'/ro/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ro/docs/Add-ons', - u'/ro/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Add-ons', - u'/ru/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Add-ons/', - u'/ru/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Add-ons/WebExtensions', - u'/ru/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Add-ons$edit', - u'/ru/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/docs/Add-ons', - u'/ru/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sv-SE/Add-ons', - u'/sv-SE/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sv-SE/Add-ons/', - u'/sv-SE/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sv-SE/Add-ons/WebExtensions', - u'/sv-SE/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sv-SE/Add-ons$edit', - u'/sv-SE/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sv-SE/docs/Add-ons', - u'/sv-SE/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Add-ons', - u'/th/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Add-ons/', - u'/th/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Add-ons/WebExtensions', - u'/th/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Add-ons$edit', - u'/th/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/docs/Add-ons', - u'/th/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/uk/Add-ons', - u'/uk/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/uk/Add-ons/', - u'/uk/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/uk/Add-ons/WebExtensions', - u'/uk/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/uk/Add-ons$edit', - u'/uk/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/uk/docs/Add-ons', - u'/uk/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/vi/Add-ons', - u'/vi/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/vi/Add-ons/', - u'/vi/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/vi/Add-ons/WebExtensions', - u'/vi/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/vi/Add-ons$edit', - u'/vi/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/vi/docs/Add-ons', - u'/vi/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Add-ons', - u'/zh-CN/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Add-ons/', - u'/zh-CN/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Add-ons/WebExtensions', - u'/zh-CN/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Add-ons$edit', - u'/zh-CN/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/docs/Add-ons', - u'/zh-CN/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Add-ons', - u'/zh-TW/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Add-ons/', - u'/zh-TW/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Add-ons/WebExtensions', - u'/zh-TW/docs/Mozilla/Add-ons/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Add-ons$edit', - u'/zh-TW/docs/Mozilla/Add-ons$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/docs/Add-ons', - u'/zh-TW/docs/Mozilla/Add-ons', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tr/Add-ons', - u'/tr/docs/Mozilla/Eklentiler', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tr/Add-ons/', - u'/tr/docs/Mozilla/Eklentiler', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tr/Add-ons/WebExtensions', - u'/tr/docs/Mozilla/Eklentiler/WebExtensions', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tr/Add-ons$edit', - u'/tr/docs/Mozilla/Eklentiler$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tr/docs/Add-ons', - u'/tr/docs/Mozilla/Eklentiler', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Firefox', - u'/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Firefox/', - u'/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Firefox/Privacy', - u'/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Firefox$edit', - u'/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/docs/Firefox', - u'/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/af/Firefox', - u'/af/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/af/Firefox/', - u'/af/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/af/Firefox/Privacy', - u'/af/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/af/Firefox$edit', - u'/af/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/af/docs/Firefox', - u'/af/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ar/Firefox', - u'/ar/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ar/Firefox/', - u'/ar/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ar/Firefox/Privacy', - u'/ar/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ar/Firefox$edit', - u'/ar/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ar/docs/Firefox', - u'/ar/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/az/Firefox', - u'/az/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/az/Firefox/', - u'/az/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/az/Firefox/Privacy', - u'/az/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/az/Firefox$edit', - u'/az/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/az/docs/Firefox', - u'/az/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bm/Firefox', - u'/bm/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bm/Firefox/', - u'/bm/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bm/Firefox/Privacy', - u'/bm/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bm/Firefox$edit', - u'/bm/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bm/docs/Firefox', - u'/bm/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Firefox', - u'/bn-BD/docs/Mozilla/ফায়ারফক্স', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Firefox/', - u'/bn-BD/docs/Mozilla/ফায়ারফক্স', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Firefox/Privacy', - u'/bn-BD/docs/Mozilla/ফায়ারফক্স/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Firefox$edit', - u'/bn-BD/docs/Mozilla/ফায়ারফক্স$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/docs/Firefox', - u'/bn-BD/docs/Mozilla/ফায়ারফক্স', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-IN/Firefox', - u'/bn-IN/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-IN/Firefox/', - u'/bn-IN/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-IN/Firefox/Privacy', - u'/bn-IN/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-IN/Firefox$edit', - u'/bn-IN/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-IN/docs/Firefox', - u'/bn-IN/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Firefox', - u'/ca/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Firefox/', - u'/ca/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Firefox/Privacy', - u'/ca/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Firefox$edit', - u'/ca/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/docs/Firefox', - u'/ca/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/cs/Firefox', - u'/cs/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/cs/Firefox/', - u'/cs/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/cs/Firefox/Privacy', - u'/cs/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/cs/Firefox$edit', - u'/cs/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/cs/docs/Firefox', - u'/cs/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Firefox', - u'/de/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Firefox/', - u'/de/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Firefox/Privacy', - u'/de/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Firefox$edit', - u'/de/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/docs/Firefox', - u'/de/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ee/Firefox', - u'/ee/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ee/Firefox/', - u'/ee/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ee/Firefox/Privacy', - u'/ee/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ee/Firefox$edit', - u'/ee/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ee/docs/Firefox', - u'/ee/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/el/Firefox', - u'/el/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/el/Firefox/', - u'/el/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/el/Firefox/Privacy', - u'/el/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/el/Firefox$edit', - u'/el/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/el/docs/Firefox', - u'/el/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Firefox', - u'/en-US/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Firefox/', - u'/en-US/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Firefox/Privacy', - u'/en-US/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Firefox$edit', - u'/en-US/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/docs/Firefox', - u'/en-US/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Firefox', - u'/es/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Firefox/', - u'/es/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Firefox/Privacy', - u'/es/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Firefox$edit', - u'/es/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/docs/Firefox', - u'/es/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ff/Firefox', - u'/ff/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ff/Firefox/', - u'/ff/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ff/Firefox/Privacy', - u'/ff/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ff/Firefox$edit', - u'/ff/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ff/docs/Firefox', - u'/ff/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fi/Firefox', - u'/fi/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fi/Firefox/', - u'/fi/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fi/Firefox/Privacy', - u'/fi/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fi/Firefox$edit', - u'/fi/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fi/docs/Firefox', - u'/fi/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Firefox', - u'/fr/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Firefox/', - u'/fr/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Firefox/Privacy', - u'/fr/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Firefox$edit', - u'/fr/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/docs/Firefox', - u'/fr/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fy-NL/Firefox', - u'/fy-NL/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fy-NL/Firefox/', - u'/fy-NL/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fy-NL/Firefox/Privacy', - u'/fy-NL/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fy-NL/Firefox$edit', - u'/fy-NL/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fy-NL/docs/Firefox', - u'/fy-NL/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ga-IE/Firefox', - u'/ga-IE/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ga-IE/Firefox/', - u'/ga-IE/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ga-IE/Firefox/Privacy', - u'/ga-IE/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ga-IE/Firefox$edit', - u'/ga-IE/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ga-IE/docs/Firefox', - u'/ga-IE/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ha/Firefox', - u'/ha/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ha/Firefox/', - u'/ha/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ha/Firefox/Privacy', - u'/ha/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ha/Firefox$edit', - u'/ha/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ha/docs/Firefox', - u'/ha/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/he/Firefox', - u'/he/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/he/Firefox/', - u'/he/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/he/Firefox/Privacy', - u'/he/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/he/Firefox$edit', - u'/he/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/he/docs/Firefox', - u'/he/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hi-IN/Firefox', - u'/hi-IN/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hi-IN/Firefox/', - u'/hi-IN/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hi-IN/Firefox/Privacy', - u'/hi-IN/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hi-IN/Firefox$edit', - u'/hi-IN/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hi-IN/docs/Firefox', - u'/hi-IN/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hr/Firefox', - u'/hr/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hr/Firefox/', - u'/hr/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hr/Firefox/Privacy', - u'/hr/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hr/Firefox$edit', - u'/hr/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hr/docs/Firefox', - u'/hr/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hu/Firefox', - u'/hu/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hu/Firefox/', - u'/hu/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hu/Firefox/Privacy', - u'/hu/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hu/Firefox$edit', - u'/hu/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/hu/docs/Firefox', - u'/hu/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/id/Firefox', - u'/id/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/id/Firefox/', - u'/id/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/id/Firefox/Privacy', - u'/id/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/id/Firefox$edit', - u'/id/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/id/docs/Firefox', - u'/id/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ig/Firefox', - u'/ig/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ig/Firefox/', - u'/ig/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ig/Firefox/Privacy', - u'/ig/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ig/Firefox$edit', - u'/ig/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ig/docs/Firefox', - u'/ig/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Firefox', - u'/it/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Firefox/', - u'/it/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Firefox/Privacy', - u'/it/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Firefox$edit', - u'/it/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/docs/Firefox', - u'/it/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Firefox', - u'/ja/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Firefox/', - u'/ja/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Firefox/Privacy', - u'/ja/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Firefox$edit', - u'/ja/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/docs/Firefox', - u'/ja/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ka/Firefox', - u'/ka/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ka/Firefox/', - u'/ka/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ka/Firefox/Privacy', - u'/ka/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ka/Firefox$edit', - u'/ka/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ka/docs/Firefox', - u'/ka/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Firefox', - u'/ko/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Firefox/', - u'/ko/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Firefox/Privacy', - u'/ko/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Firefox$edit', - u'/ko/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/docs/Firefox', - u'/ko/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ln/Firefox', - u'/ln/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ln/Firefox/', - u'/ln/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ln/Firefox/Privacy', - u'/ln/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ln/Firefox$edit', - u'/ln/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ln/docs/Firefox', - u'/ln/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ml/Firefox', - u'/ml/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ml/Firefox/', - u'/ml/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ml/Firefox/Privacy', - u'/ml/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ml/Firefox$edit', - u'/ml/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ml/docs/Firefox', - u'/ml/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ms/Firefox', - u'/ms/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ms/Firefox/', - u'/ms/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ms/Firefox/Privacy', - u'/ms/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ms/Firefox$edit', - u'/ms/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ms/docs/Firefox', - u'/ms/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/my/Firefox', - u'/my/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/my/Firefox/', - u'/my/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/my/Firefox/Privacy', - u'/my/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/my/Firefox$edit', - u'/my/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/my/docs/Firefox', - u'/my/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/nl/Firefox', - u'/nl/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/nl/Firefox/', - u'/nl/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/nl/Firefox/Privacy', - u'/nl/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/nl/Firefox$edit', - u'/nl/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/nl/docs/Firefox', - u'/nl/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pl/Firefox', - u'/pl/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pl/Firefox/', - u'/pl/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pl/Firefox/Privacy', - u'/pl/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pl/Firefox$edit', - u'/pl/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pl/docs/Firefox', - u'/pl/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Firefox', - u'/pt-BR/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Firefox/', - u'/pt-BR/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Firefox/Privacy', - u'/pt-BR/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Firefox$edit', - u'/pt-BR/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/docs/Firefox', - u'/pt-BR/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-PT/Firefox', - u'/pt-PT/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-PT/Firefox/', - u'/pt-PT/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-PT/Firefox/Privacy', - u'/pt-PT/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-PT/Firefox$edit', - u'/pt-PT/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-PT/docs/Firefox', - u'/pt-PT/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ro/Firefox', - u'/ro/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ro/Firefox/', - u'/ro/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ro/Firefox/Privacy', - u'/ro/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ro/Firefox$edit', - u'/ro/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ro/docs/Firefox', - u'/ro/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Firefox', - u'/ru/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Firefox/', - u'/ru/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Firefox/Privacy', - u'/ru/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Firefox$edit', - u'/ru/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/docs/Firefox', - u'/ru/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/son/Firefox', - u'/son/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/son/Firefox/', - u'/son/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/son/Firefox/Privacy', - u'/son/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/son/Firefox$edit', - u'/son/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/son/docs/Firefox', - u'/son/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sq/Firefox', - u'/sq/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sq/Firefox/', - u'/sq/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sq/Firefox/Privacy', - u'/sq/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sq/Firefox$edit', - u'/sq/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sq/docs/Firefox', - u'/sq/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sv-SE/Firefox', - u'/sv-SE/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sv-SE/Firefox/', - u'/sv-SE/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sv-SE/Firefox/Privacy', - u'/sv-SE/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sv-SE/Firefox$edit', - u'/sv-SE/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sv-SE/docs/Firefox', - u'/sv-SE/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sw/Firefox', - u'/sw/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sw/Firefox/', - u'/sw/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sw/Firefox/Privacy', - u'/sw/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sw/Firefox$edit', - u'/sw/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/sw/docs/Firefox', - u'/sw/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ta/Firefox', - u'/ta/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ta/Firefox/', - u'/ta/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ta/Firefox/Privacy', - u'/ta/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ta/Firefox$edit', - u'/ta/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ta/docs/Firefox', - u'/ta/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Firefox', - u'/th/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Firefox/', - u'/th/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Firefox/Privacy', - u'/th/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Firefox$edit', - u'/th/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/docs/Firefox', - u'/th/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tl/Firefox', - u'/tl/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tl/Firefox/', - u'/tl/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tl/Firefox/Privacy', - u'/tl/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tl/Firefox$edit', - u'/tl/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tl/docs/Firefox', - u'/tl/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tr/Firefox', - u'/tr/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tr/Firefox/', - u'/tr/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tr/Firefox/Privacy', - u'/tr/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tr/Firefox$edit', - u'/tr/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/tr/docs/Firefox', - u'/tr/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/vi/Firefox', - u'/vi/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/vi/Firefox/', - u'/vi/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/vi/Firefox/Privacy', - u'/vi/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/vi/Firefox$edit', - u'/vi/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/vi/docs/Firefox', - u'/vi/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/wo/Firefox', - u'/wo/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/wo/Firefox/', - u'/wo/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/wo/Firefox/Privacy', - u'/wo/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/wo/Firefox$edit', - u'/wo/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/wo/docs/Firefox', - u'/wo/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/xh/Firefox', - u'/xh/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/xh/Firefox/', - u'/xh/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/xh/Firefox/Privacy', - u'/xh/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/xh/Firefox$edit', - u'/xh/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/xh/docs/Firefox', - u'/xh/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/yo/Firefox', - u'/yo/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/yo/Firefox/', - u'/yo/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/yo/Firefox/Privacy', - u'/yo/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/yo/Firefox$edit', - u'/yo/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/yo/docs/Firefox', - u'/yo/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Firefox', - u'/zh-CN/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Firefox/', - u'/zh-CN/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Firefox/Privacy', - u'/zh-CN/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Firefox$edit', - u'/zh-CN/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/docs/Firefox', - u'/zh-CN/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Firefox', - u'/zh-TW/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Firefox/', - u'/zh-TW/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Firefox/Privacy', - u'/zh-TW/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Firefox$edit', - u'/zh-TW/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/docs/Firefox', - u'/zh-TW/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zu/Firefox', - u'/zu/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zu/Firefox/', - u'/zu/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zu/Firefox/Privacy', - u'/zu/docs/Mozilla/Firefox/Privacy', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zu/Firefox$edit', - u'/zu/docs/Mozilla/Firefox$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zu/docs/Firefox', - u'/zu/docs/Mozilla/Firefox', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Apps', - u'/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Apps/', - u'/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Apps/Tutorials', - u'/docs/Web/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Apps$edit', - u'/docs/Web/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/docs/Apps', - u'/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Apps', - u'/bn-BD/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Apps/', - u'/bn-BD/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Apps/Tutorials', - u'/bn-BD/docs/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/bn-BD/Apps$edit', - u'/bn-BD/docs/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Apps', - u'/de/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Apps/', - u'/de/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Apps/Tutorials', - u'/de/docs/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Apps$edit', - u'/de/docs/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Apps', - u'/en-US/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Apps/', - u'/en-US/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Apps/Tutorials', - u'/en-US/docs/Web/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Apps$edit', - u'/en-US/docs/Web/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/docs/Apps', - u'/en-US/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Apps', - u'/es/docs/Web/Aplicaciones', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Apps/', - u'/es/docs/Web/Aplicaciones', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Apps/Tutorials', - u'/es/docs/Web/Aplicaciones/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Apps$edit', - u'/es/docs/Web/Aplicaciones$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/docs/Apps', - u'/es/docs/Web/Aplicaciones', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Apps', - u'/fa/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Apps/', - u'/fa/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Apps/Tutorials', - u'/fa/docs/Web/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Apps$edit', - u'/fa/docs/Web/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/docs/Apps', - u'/fa/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Apps', - u'/fr/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Apps/', - u'/fr/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Apps/Tutorials', - u'/fr/docs/Web/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Apps$edit', - u'/fr/docs/Web/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/docs/Apps', - u'/fr/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Apps', - u'/it/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Apps/', - u'/it/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Apps/Tutorials', - u'/it/docs/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Apps$edit', - u'/it/docs/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Apps', - u'/ja/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Apps/', - u'/ja/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Apps/Tutorials', - u'/ja/docs/Web/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Apps$edit', - u'/ja/docs/Web/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/docs/Apps', - u'/ja/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Apps', - u'/ko/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Apps/', - u'/ko/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Apps/Tutorials', - u'/ko/docs/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ko/Apps$edit', - u'/ko/docs/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Apps', - u'/pt-BR/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Apps/', - u'/pt-BR/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Apps/Tutorials', - u'/pt-BR/docs/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/pt-BR/Apps$edit', - u'/pt-BR/docs/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Apps', - u'/ru/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Apps/', - u'/ru/docs/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Apps/Tutorials', - u'/ru/docs/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ru/Apps$edit', - u'/ru/docs/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ta/Apps', - u'/ta/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ta/Apps/', - u'/ta/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ta/Apps/Tutorials', - u'/ta/docs/Web/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ta/Apps$edit', - u'/ta/docs/Web/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ta/docs/Apps', - u'/ta/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Apps', - u'/th/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Apps/', - u'/th/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Apps/Tutorials', - u'/th/docs/Web/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/Apps$edit', - u'/th/docs/Web/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/th/docs/Apps', - u'/th/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Apps', - u'/zh-CN/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Apps/', - u'/zh-CN/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Apps/Tutorials', - u'/zh-CN/docs/Web/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Apps$edit', - u'/zh-CN/docs/Web/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/docs/Apps', - u'/zh-CN/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Apps', - u'/zh-TW/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Apps/', - u'/zh-TW/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Apps/Tutorials', - u'/zh-TW/docs/Web/Apps/Tutorials', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/Apps$edit', - u'/zh-TW/docs/Web/Apps$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-TW/docs/Apps', - u'/zh-TW/docs/Web/Apps', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Learn', - u'/docs/Learn', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Learn/', - u'/docs/Learn', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Learn/JavaScript', - u'/docs/Learn/JavaScript', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Learn$edit', - u'/docs/Learn$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Learn', - u'/ca/docs/Learn', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Learn/', - u'/ca/docs/Learn', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Learn/JavaScript', - u'/ca/docs/Learn/JavaScript', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ca/Learn$edit', - u'/ca/docs/Learn$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Learn', - u'/de/docs/Learn', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Learn/', - u'/de/docs/Learn', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Learn/JavaScript', - u'/de/docs/Learn/JavaScript', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Learn$edit', - u'/de/docs/Learn$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Apprendre', - u'/fr/docs/Apprendre', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Apprendre/', - u'/fr/docs/Apprendre', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Apprendre/JavaScript', - u'/fr/docs/Apprendre/JavaScript', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Apprendre$edit', - u'/fr/docs/Apprendre$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Marketplace', - u'/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Marketplace/', - u'/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Marketplace/APIs', - u'/docs/Mozilla/Marketplace/APIs', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/Marketplace$edit', - u'/docs/Mozilla/Marketplace$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/docs/Marketplace', - u'/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Marketplace', - u'/de/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Marketplace/', - u'/de/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Marketplace/APIs', - u'/de/docs/Mozilla/Marketplace/APIs', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/Marketplace$edit', - u'/de/docs/Mozilla/Marketplace$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/de/docs/Marketplace', - u'/de/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Marketplace', - u'/en-US/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Marketplace/', - u'/en-US/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Marketplace/APIs', - u'/en-US/docs/Mozilla/Marketplace/APIs', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/Marketplace$edit', - u'/en-US/docs/Mozilla/Marketplace$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/en-US/docs/Marketplace', - u'/en-US/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Marketplace', - u'/es/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Marketplace/', - u'/es/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Marketplace/APIs', - u'/es/docs/Mozilla/Marketplace/APIs', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/Marketplace$edit', - u'/es/docs/Mozilla/Marketplace$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/es/docs/Marketplace', - u'/es/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Marketplace', - u'/fa/docs/Mozilla/بازار', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Marketplace/', - u'/fa/docs/Mozilla/بازار', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Marketplace/APIs', - u'/fa/docs/Mozilla/بازار/APIs', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/Marketplace$edit', - u'/fa/docs/Mozilla/بازار$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fa/docs/Marketplace', - u'/fa/docs/Mozilla/بازار', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Marketplace', - u'/fr/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Marketplace/', - u'/fr/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Marketplace/APIs', - u'/fr/docs/Mozilla/Marketplace/APIs', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/Marketplace$edit', - u'/fr/docs/Mozilla/Marketplace$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/fr/docs/Marketplace', - u'/fr/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Marketplace', - u'/it/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Marketplace/', - u'/it/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Marketplace/APIs', - u'/it/docs/Mozilla/Marketplace/APIs', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/Marketplace$edit', - u'/it/docs/Mozilla/Marketplace$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/it/docs/Marketplace', - u'/it/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Marketplace', - u'/ja/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Marketplace/', - u'/ja/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Marketplace/APIs', - u'/ja/docs/Mozilla/Marketplace/APIs', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/Marketplace$edit', - u'/ja/docs/Mozilla/Marketplace$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/ja/docs/Marketplace', - u'/ja/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Marketplace', - u'/zh-CN/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Marketplace/', - u'/zh-CN/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Marketplace/APIs', - u'/zh-CN/docs/Mozilla/Marketplace/APIs', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/Marketplace$edit', - u'/zh-CN/docs/Mozilla/Marketplace$edit', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), - url_test(u'/zh-CN/docs/Marketplace', - u'/zh-CN/docs/Mozilla/Marketplace', - status_code=302, - resp_headers={ - 'cache-control': 'max-age=0, public, s-maxage=604800' - }), -))) +zone_redirects = ( + (u'Add-ons', u'Mozilla/Add-ons', 'WebExtensions', ('af', 'ar', 'bn-BD', + 'bn-IN', 'ca', 'cs', + 'de', 'en-US', 'es', + 'fa', 'fr', 'hu', + 'id', 'it', 'ja', + 'ms', 'nl', 'pl', + 'pt-BR', 'pt-PT', 'ro', + 'ru', 'sv-SE', 'th', + 'uk', 'vi', 'zh-CN', + 'zh-TW', None)), + (u'Add-ons', u'Mozilla/Πρόσθετα', 'WebExtensions', ('el',)), + (u'Add-ons', u'Mozilla/애드온들', 'WebExtensions', ('ko',)), + (u'Add-ons', u'Mozilla/Eklentiler', 'WebExtensions', ('tr',)), + (u'Firefox', u'Mozilla/Firefox', 'Privacy', ('af', 'ar', 'az', 'bm', + 'bn-IN', 'ca', 'cs', 'de', + 'ee', 'el', 'en-US', 'es', + 'ff', 'fi', 'fr', 'fy-NL', + 'ga-IE', 'ha', 'he', 'hi-IN', + 'hr', 'hu', 'id', 'ig', + 'it', 'ja', 'ka', 'ko', + 'ln', 'ml', 'ms', 'my', + 'nl', 'pl', 'pt-BR', 'pt-PT', + 'ro', 'ru', 'son', 'sq', + 'sv-SE', 'sw', 'ta', 'th', + 'tl', 'tr', 'vi', 'wo', + 'xh', 'yo', 'zh-CN', 'zh-TW', + 'zu', None)), + (u'Firefox', u'Mozilla/ফায়ারফক্স', 'Privacy', ('bn-BD',)), + (u'Apps', u'Web/Apps', 'Tutorials', ('en-US', 'fa', 'fr', 'ja', 'ta', 'th', + 'zh-CN', 'zh-TW', None)), + (u'Apps', u'Web/Aplicaciones', 'Tutorials', ('es',)), + (u'Apps', u'Apps', 'Tutorials', ('bn-BD', 'de', 'it', 'ko', 'pt-BR', + 'ru')), + (u'Learn', u'Learn', 'JavaScript', ('ca', 'de', None)), + (u'Apprendre', u'Apprendre', 'JavaScript', ('fr',)), + (u'Marketplace', u'Mozilla/Marketplace', 'APIs', ('de', 'en-US', 'es', + 'fr', 'it', 'ja', + 'zh-CN', None)), + (u'Marketplace', u'Mozilla/بازار', 'APIs', ('fa',)), +) + +zone_url_test_kwargs = { + 'status_code': 302, + 'resp_headers': { + 'cache-control': 'max-age=0, public, s-maxage=604800' + } +} + +ZONE_REDIRECT_URLS = [] +for zone_root, wiki_slug, child_path, locales in zone_redirects: + for locale in locales: + prefix = (u'/' + locale) if locale else '' + redirect_path = prefix + u'/docs/' + wiki_slug + paths = [prefix + u'/' + zone_root] + # Test with a "docs" based path as well if it makes sense. + if zone_root != wiki_slug: + paths.append(prefix + u'/docs/' + zone_root) + for path in paths: + # The zone root without a trailing slash. + ZONE_REDIRECT_URLS.append( + url_test(path, redirect_path, **zone_url_test_kwargs)) + # The zone root with a trailing slash. + ZONE_REDIRECT_URLS.append( + url_test(path + u'/', redirect_path, **zone_url_test_kwargs)) + # A zone child page with query parameters. + ZONE_REDIRECT_URLS.append( + url_test(path + u'/' + child_path + '?raw¯os', + redirect_path + u'/' + child_path + '?raw¯os', + **zone_url_test_kwargs)) + # The zone root with $edit. + ZONE_REDIRECT_URLS.append( + url_test(path + u'$edit', redirect_path + u'$edit', + **zone_url_test_kwargs)) # Redirects added after 2017 AWS move REDIRECT_URLS = list(flatten((