Skip to content
Permalink
63a8a83b71
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
527 lines (446 sloc) 26.3 KB
from bedrock.redirects.util import redirect, is_firefox_redirector, no_redirect
def firefox_mobile_faq(request, *args, **kwargs):
qs = request.META.get('QUERY_STRING', '')
if 'os=firefox-os' in qs:
return 'https://support.mozilla.org/products/firefox-os'
return 'firefox.android.faq'
redirectpatterns = (
# overrides
redirect('^zh-TW/mobile/?', 'http://mozilla.com.tw/firefox/mobile/', locale_prefix=False),
redirect('^zh-TW/download/?', 'http://mozilla.com.tw/firefox/download/', locale_prefix=False),
redirect(r'^firefox/aurora/all/?$', 'firefox.all', to_kwargs={'channel': 'developer'}),
# bug 831810 & 1142583 & 1239960
redirect(r'^mwc/?$', 'firefox.os.devices', re_flags='i', query={
'utm_campaign': 'mwc-redirect',
'utm_medium': 'referral',
'utm_source': 'mozilla.org',
}),
# bug 748503
redirect(r'^projects/firefox/[^/]+a[0-9]+/firstrun(?P<p>.*)$',
'/firefox/nightly/firstrun{p}'),
# bug 1275483
redirect(r'^firefox/nightly/whatsnew/?', 'firefox.nightly_firstrun'),
# bug 840814
redirect(r'^projects/firefox'
r'(?P<version>/(?:\d+\.\d+\.?(?:\d+)?\.?(?:\d+)?(?:[a|b]?)(?:\d*)(?:pre)?(?:\d)?))'
r'(?P<page>/(?:firstrun|whatsnew))'
r'(?P<rest>/.*)?$', '/firefox{version}{page}{rest}'),
# bug 877165
redirect(r'^firefox/connect', 'mozorg.home'),
# bug 657049, 1238851
redirect(r'^firefox/accountmanager/?$', 'https://developer.mozilla.org/Persona'),
# bug 1307091
redirect(r'^firefox/nightly/?$', 'firefox.all', to_kwargs={'channel': 'nightly'},
permanent=False),
# Bug 1009247, 1101220, 1299947
redirect(r'^(firefox/)?beta/?$', 'firefox.channel.desktop', anchor='beta'),
redirect(r'^(firefox/)?aurora/?$', 'firefox.channel.desktop', anchor='developer'),
redirect(r'^mobile/beta/?$', 'firefox.channel.android', anchor='beta'),
redirect(r'^mobile/aurora/?$', 'firefox.channel.android', anchor='aurora'),
# bug 988044
redirect(r'^firefox/unsupported-systems\.html$', 'firefox.unsupported-systems'),
# bug 736934, 860865, 1101220, 1153351
redirect(r'^mobile/(?P<channel>(?:beta|aurora)/)?notes/?$',
'/firefox/android/{channel}notes/'),
redirect(r'^firefox/(?P<channel>(?:beta|aurora|organizations)/)?system-requirements(\.html)?$',
'/firefox/{channel}system-requirements/'),
# bug 1155870
redirect(r'^firefox/os/(releases|notes)/?$',
'https://developer.mozilla.org/Firefox_OS/Releases'),
redirect(r'^firefox/os/(?:release)?notes/(?P<v>[^/]+)/?$',
'https://developer.mozilla.org/Firefox_OS/Releases/{v}'),
# bug 878871
redirect(r'^firefoxos', '/firefox/os/'),
# Bug 1006616
redirect(r'^download/?$', 'firefox.new'),
# bug 837883
redirect(r'^firefox/firefox\.exe$', 'mozorg.home', re_flags='i'),
# bug 821006
redirect(r'^firefox/all(\.html)?$', 'firefox.all'),
# bug 727561
redirect(r'^firefox/search(?:\.html)?$', 'firefox.new'),
# bug 860865, 1101220
redirect(r'^firefox/all-(?:beta|rc)(?:/|\.html)?$', 'firefox.all',
to_kwargs={'channel': 'beta'}),
redirect(r'^firefox/all-aurora(?:/|\.html)?$', 'firefox.all',
to_kwargs={'channel': 'developer'}),
redirect(r'^firefox/aurora/(?P<page>all|notes|system-requirements)/?$',
'/firefox/developer/{page}/'),
redirect(r'^firefox/organizations/all\.html$', 'firefox.all',
to_kwargs={'channel': 'organizations'}),
# bug 729329
redirect(r'^mobile/sync', 'firefox.sync'),
# bug 882845
redirect(r'^firefox/toolkit/download-to-your-devices', 'firefox.new'),
# bug 1014823
redirect(r'^(products/)?firefox/releases/whatsnew/?$', 'firefox.whatsnew'),
# bug 929775
redirect(r'^firefox/update', 'firefox.new', query={
'utm_source': 'firefox-browser',
'utm_medium': 'firefox-browser',
'utm_campaign': 'firefox-update-redirect',
}),
# Bug 868182, 986174
redirect(r'^(m|(firefox/)?mobile)/features/?$', 'firefox.android.index'),
redirect(r'^(m|(firefox/)?mobile)/faq/?$', firefox_mobile_faq, query=False),
# bug 884933
redirect(r'^(m|(firefox/)?mobile)/platforms/?$',
'https://support.mozilla.org/kb/will-firefox-work-my-mobile-device'),
redirect(r'^m/?$', 'firefox.new'),
# Bug 730488 deprecate /firefox/all-older.html
redirect(r'^firefox/all-older\.html$', 'firefox.new'),
# bug 1120658
redirect(r'^seamonkey-transition\.html$',
'http://www-archive.mozilla.org/seamonkey-transition.html'),
# Bug 1186373
redirect(r'^firefox/hello/npssurvey/?$',
'https://www.surveygizmo.com/s3/2227372/Firefox-Hello-Product-Survey',
permanent=False),
# Bug 1221739
redirect(r'^firefox/hello/feedbacksurvey/?$',
'https://www.surveygizmo.com/s3/2319863/d2b7dc4b5687',
permanent=False),
# bug 1148127
redirect(r'^products/?$', 'firefox.family.index'),
# Bug 1110927
redirect(r'^(products/)?firefox/start/central\.html$', 'firefox.new'),
redirect(r'^firefox/sync/firstrun\.html$', 'firefox.sync'),
redirect(r'^firefox/panorama/?$', 'https://support.mozilla.org/kb/tab-groups-organize-tabs'),
# Bug 920212
redirect(r'^firefox/fx/?$', 'firefox.new'),
# Bug 979531, 1003727, 979664, 979654, 979660
redirect(r'^firefox/customize/?$', 'firefox.desktop.customize'),
redirect(r'^firefox/(?:performance|happy|speed|memory)/?$', 'firefox.desktop.fast'),
redirect(r'^firefox/security/?$', 'firefox.desktop.trust'),
redirect(r'^firefox/technology/?$', 'https://developer.mozilla.org/docs/Tools'),
# Bug 979527
redirect(r'^(products/)?firefox/central(/|\.html|-lite\.html)?$', is_firefox_redirector(
'https://support.mozilla.org/kb/get-started-firefox-overview-main-features',
'firefox.new'), cache_timeout=0),
# bug 868169
redirect(r'^mobile/android-download\.html$',
'https://play.google.com/store/apps/details',
query={'id': 'org.mozilla.firefox'}, merge_query=True),
redirect(r'^mobile/android-download-beta\.html$',
'https://play.google.com/store/apps/details',
query={'id': 'org.mozilla.firefox_beta'}, merge_query=True),
# bug 675031
redirect(r'^projects/fennec(?P<page>/[\/\w\.-]+)?',
'http://website-archive.mozilla.org/www.mozilla.org/fennec_releasenotes/projects/fennec{page}'),
# bug 876581
redirect(r'^firefox/phishing-protection(/?)$',
'https://support.mozilla.org/kb/how-does-phishing-and-malware-protection-work'),
# bug 1006079
redirect(r'^mobile/home/?(?:index.html)?$',
'https://blog.mozilla.org/services/2012/08/31/retiring-firefox-home/'),
# bug 949562
redirect(r'^mobile/home/1\.0/releasenotes(?:/(?:index.html)?)?$',
'http://website-archive.mozilla.org/www.mozilla.org/firefox_home/mobile/home/1.0/releasenotes/'),
redirect(r'^mobile/home/1\.0\.2/releasenotes(?:/(?:index.html)?)?$',
'http://website-archive.mozilla.org/www.mozilla.org/firefox_home/mobile/home/1.0.2/releasenotes/'),
redirect(r'^mobile/home/faq(?:/(?:index.html)?)?$',
'http://website-archive.mozilla.org/www.mozilla.org/firefox_home/mobile/home/faq/'),
# bug 960064
redirect(r'^firefox/(?P<num>vpat-[.1-5]+)(?:\.html)?$',
'http://website-archive.mozilla.org/www.mozilla.org/firefox_vpat/firefox-{num}.html'),
redirect(r'^firefox/vpat(?:\.html)?',
'http://website-archive.mozilla.org/www.mozilla.org/firefox_vpat/firefox-vpat-3.html'),
# bug 1017564
redirect(r'^mobile/.+/system-requirements/?$',
'https://support.mozilla.org/kb/will-firefox-work-my-mobile-device'),
# bug 858315
redirect(r'^projects/devpreview/firstrun(?:/(?:index.html)?)?$', '/firefox/firstrun/'),
redirect(r'^projects/devpreview/(?P<page>[\/\w\.-]+)?$',
'http://website-archive.mozilla.org/www.mozilla.org/devpreview_releasenotes/projects/devpreview/{page}'),
# bug 1001238, 1025056
no_redirect(r'^firefox/(24\.[5678]\.\d|28\.0)/releasenotes/?$'),
# bug 1235082
no_redirect(r'^firefox/23\.0(\.1)?/releasenotes/?$'),
# bug 947890, 1069902
redirect(r'^firefox/releases/(?P<v>[01]\.(?:.*))$',
'http://website-archive.mozilla.org/www.mozilla.org/firefox_releasenotes/en-US/firefox/releases/{v}'),
redirect(r'^(?P<path>(?:firefox|mobile)/(?:\d)\.(?:.*)/releasenotes(?:.*))$',
'http://website-archive.mozilla.org/www.mozilla.org/firefox_releasenotes/en-US/{path}'),
#
# bug 988746, 989423, 994186, 1153351
redirect(r'^mobile/(?P<v>2[38]\.0(?:\.\d)?|29\.0(?:beta|\.\d)?)/releasenotes/?$',
'/firefox/android/{v}/releasenotes/'),
redirect(r'^mobile/(?P<v>[3-9]\d\.\d(?:a2|beta|\.\d)?)/(?P<p>aurora|release)notes/?$',
'/firefox/android/{v}/{p}notes/'),
# bug 1041712, 1069335, 1069902
redirect(r'^(?P<prod>firefox|mobile)/(?P<vers>([0-9]|1[0-9]|2[0-8])\.(\d+(?:beta|a2|\.\d+)?))'
r'/(?P<channel>release|aurora)notes/(?P<page>[\/\w\.-]+)?$',
'http://website-archive.mozilla.org/www.mozilla.org/firefox_releasenotes/en-US'
'/{prod}/{vers}/{channel}notes/{page}'),
# bug 767614 superceeded by bug 957711 and 1003718 and 1239960
redirect(r'^(mobile|fennec)/?$', 'firefox.family.index'),
# bug 876668
redirect(r'^mobile/customize(?:/.*)?$', '/firefox/android/'),
# bug 1211907
redirect(r'^firefox/independent/?$', 'firefox.new'),
redirect(r'^firefox/personal/?$', 'firefox.new'),
# bug 845983
redirect(r'^metrofirefox(?P<path>/.*)?$', '/firefox{path}'),
# bug 1003703, 1009630
redirect(r'^firefox(?P<vers>/.+)/firstrun/eu/?$', '/firefox{vers}/firstrun/', query={
'utm_source': 'direct',
'utm_medium': 'none',
'utm_campaign': 'redirect',
'utm_content': 'eu-firstrun-redirect',
}),
# bug 960543
redirect(r'^firefox/(?P<vers>[23])\.0/eula', '/legal/eula/firefox-{vers}/'),
# bug 1224060
redirect(
r'^ja/firefox/ios/(?P<vers>[0-9]+(\.[0-9]+)*)/(?P<file>releasenotes|system-requirements)',
'https://www.mozilla.jp/firefox/ios/{vers}/{file}/', locale_prefix=False),
# bug 1150713
redirect(r'^firefox/sms(?:/.*)?$', 'firefox.family.index'),
# Redirects for SeaMonkey project website, now living at seamonkey-project.org
redirect(r'^projects/seamonkey/$', 'http://www.seamonkey-project.org/'),
redirect(r'^projects/seamonkey/artwork\.html$',
'http://www.seamonkey-project.org/dev/artwork'),
redirect(r'^projects/seamonkey/community\.html$',
'http://www.seamonkey-project.org/community'),
redirect(r'^projects/seamonkey/get-involved\.html$',
'http://www.seamonkey-project.org/dev/get-involved'),
redirect(r'^projects/seamonkey/index\.html$', 'http://www.seamonkey-project.org/'),
redirect(r'^projects/seamonkey/news\.html$', 'http://www.seamonkey-project.org/news'),
redirect(r'^projects/seamonkey/project-areas\.html$',
'http://www.seamonkey-project.org/dev/project-areas'),
redirect(r'^projects/seamonkey/releases/$', 'http://www.seamonkey-project.org/releases/'),
redirect(r'^projects/seamonkey/releases/index\.html$',
'http://www.seamonkey-project.org/releases/'),
redirect(r'^projects/seamonkey/review-and-flags\.html$',
'http://www.seamonkey-project.org/dev/review-and-flags'),
redirect(r'^projects/seamonkey/releases/(?P<vers>1\..*)\.html$',
'http://www.seamonkey-project.org/releases/{vers}'),
redirect(r'^projects/seamonkey/releases/seamonkey(?P<x>.*)/index.html$',
'http://www.seamonkey-project.org/releases/seamonkey{x}/'),
redirect(r'^projects/seamonkey/releases/seamonkey(?P<x>.*/.*).html$',
'http://www.seamonkey-project.org/releases/seamonkey{x}'),
redirect(r'^projects/seamonkey/releases/updates/(?P<x>.*)$',
'http://www.seamonkey-project.org/releases/updates/{x}'),
redirect(r'^projects/seamonkey/start/$', 'http://www.seamonkey-project.org/start/'),
# Bug 638948 redirect beta privacy policy link
redirect(r'^firefox/beta/feedbackprivacypolicy/?$', '/privacy/firefox/'),
# Bug 1238248
redirect(r'^firefox/push/?$',
'https://support.mozilla.org/kb/push-notifications-firefox'),
# Bug 1239960
redirect(r'^firefox/partners/?$', 'firefox.os.index'),
# Bug 1243060
redirect(r'^firefox/tiles/?$',
'https://support.mozilla.org/kb/about-tiles-new-tab'),
# Bug 1239863
redirect(r'^firefox/os/1\.1/?$', 'firefox.os.index'),
redirect(r'^firefox/os/1\.3/?$', 'firefox.os.index'),
redirect(r'^firefox/os/1\.3t/?$', 'firefox.os.index'),
redirect(r'^firefox/os/1\.4/?$', 'firefox.os.index'),
redirect(r'^firefox/os/2\.0/?$', 'firefox.os.index'),
redirect(r'^firefox/os/2\.5/?$', 'firefox.os.index'),
redirect(r'^firefox/os/faq/?$',
'https://support.mozilla.org/products/firefox-os'),
# Bug 1252332
redirect(r'^sync/?$', 'firefox.sync'),
# Bug 424204
redirect(r'^firefox/help/?$', 'https://support.mozilla.com/{locale}kb/'),
redirect(r'^fxandroid/?$', 'firefox.android.index'),
# Bug 1255882
redirect(r'^firefox/personal', 'firefox.new'),
redirect(r'^firefox/upgrade', 'firefox.new'),
redirect(r'^firefox/ie', 'firefox.new'),
# must go above the bug 1255882 stuff below
redirect('^projects/xul/joy-of-xul\.html$',
'https://developer.mozilla.org/docs/Mozilla/Tech/XUL/The_Joy_of_XUL'),
redirect('^projects/xul/xre(old)?\.html$',
'https://developer.mozilla.org/docs/Archive/Mozilla/XULRunner'),
redirect('^projects/xslt/js-interface\.html$',
'https://developer.mozilla.org/docs/'
'Web/XSLT/Using_the_Mozilla_JavaScript_interface_to_XSL_Transformations'),
redirect('^projects/xslt/faq\.html$',
'https://developer.mozilla.org/docs/'
'Web/API/XSLTProcessor/XSL_Transformations_in_Mozilla_FAQ'),
redirect('^projects/xslt/standalone\.html$',
'https://developer.mozilla.org/docs/'
'Archive/Mozilla/Building_TransforMiiX_standalone'),
redirect('^projects/plugins/first-install-problem\.html$',
'https://developer.mozilla.org/Add-ons/Plugins/The_First_Install_Problem'),
redirect('^projects/plugins/install-scheme\.html$',
'https://developer.mozilla.org/docs/'
'Installing_plugins_to_Gecko_embedding_browsers_on_Windows'),
redirect('^projects/plugins/npruntime-sample-in-visual-studio\.html$',
'https://developer.mozilla.org/docs/'
'Compiling_The_npruntime_Sample_Plugin_in_Visual_Studio'),
redirect('^projects/plugins/npruntime\.html$',
'https://developer.mozilla.org/docs/Plugins/Guide/Scripting_plugins'),
redirect('^projects/plugins/plugin-host-control\.html$',
'https://developer.mozilla.org/docs/'
'Archive/Mozilla/ActiveX_Control_for_Hosting_Netscape_Plug-ins_in_IE'),
redirect('^projects/plugins/xembed-plugin-extension\.html$',
'https://developer.mozilla.org/Add-ons/Plugins/XEmbed_Extension_for_Mozilla_Plugins'),
redirect('^projects/netlib/http/http-debugging\.html$',
'https://developer.mozilla.org/docs/Mozilla/Debugging/HTTP_logging'),
redirect('^projects/netlib/integrated-auth\.html$',
'https://developer.mozilla.org/docs/Mozilla/Integrated_authentication'),
redirect('^projects/netlib/Link_Prefetching_FAQ\.html$',
'https://developer.mozilla.org/docs/Web/HTTP/Link_prefetching_FAQ'),
redirect(r'^projects/embedding/GRE\.html$',
'https://developer.mozilla.org/docs/Archive/Mozilla/GRE'),
redirect(r'^projects/embedding/windowAPIs\.html$',
'https://developer.mozilla.org/docs/Mozilla/Tech/Embedded_Dialog_API'),
redirect(r'^projects/embedding/howto/config\.html$',
'https://developer.mozilla.org/docs/Gecko/Embedding_Mozilla/Roll_your_own_browser'),
redirect(r'^projects/embedding/howto/Initializations\.html$',
'https://developer.mozilla.org/docs/Gecko/Embedding_Mozilla/Roll_your_own_browser'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasicsTOC\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics#toc'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics2\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics#Why_Gecko'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics3\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics'
'#What_You_Need_to_Embed'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics4\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics'
'#Getting_the_Code'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics5\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics'
'#Understanding_the_Coding_Environment'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics6\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics#XPCOM'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics7\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics#XPIDL'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics8\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics'
'#XPConnect_and_XPT_files'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics9\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics'
'#String_classes'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics10\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics#XUL.2FXBL'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics11\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics'
'#Choosing_Additional_Functionalities'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics12\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics'
'#What_Gecko_Provides'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics13\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics'
'#What_You_Provide'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics14\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics'
'#Common_Embedding_Tasks'),
redirect(r'^projects/embedding/embedoverview/EmbeddingBasics16\.html$',
'https://developer.mozilla.org/docs/Mozilla/Gecko/Gecko_Embedding_Basics'
'#Appendix:_Data_Flow_Inside_Gecko'),
redirect(r'^projects/embedding/examples/',
'https://developer.mozilla.org/docs/Gecko/Embedding_Mozilla/Roll_your_own_browser'),
# Bug 1255882
redirect(r'^projects/bonecho/anti-phishing/?$',
'https://support.mozilla.org/kb/how-does-phishing-and-malware-protection-work'),
redirect(r'^projects/bonecho(/.*)?$', 'firefox.channel.desktop'),
redirect(r'^projects/bonsai(/.*)?$', 'https://wiki.mozilla.org/Bonsai'),
redirect(r'^projects/camino(/.*)?$', 'http://caminobrowser.org/'),
redirect(r'^projects/cck(/.*)?$', 'https://wiki.mozilla.org/CCK'),
redirect(r'^projects/chimera(/.*)?$', 'http://caminobrowser.org/'),
redirect(r'^projects/deerpark(/.*)?$', 'firefox.channel.desktop'),
redirect(r'^projects/embedding/faq\.html$',
'https://developer.mozilla.org/docs/Gecko/Embedding_Mozilla/FAQ/How_do_I...'),
redirect(r'^projects/embedding(/.*)?$',
'https://developer.mozilla.org/docs/Gecko/Embedding_Mozilla'),
redirect(r'^projects/granparadiso(/.*)?$', 'firefox.channel.desktop'),
redirect(r'^projects/inspector/faq\.html$',
'https://developer.mozilla.org/docs/Tools/Add-ons/DOM_Inspector/DOM_Inspector_FAQ'),
redirect(r'^projects/inspector(/.*)?$',
'https://developer.mozilla.org/docs/Tools/Add-ons/DOM_Inspector'),
redirect(r'^projects/javaconnect(/.*)?$',
'http://developer.mozilla.org/en/JavaXPCOM'),
redirect(r'^projects/minefield(/.*)?$', 'firefox.channel.desktop'),
redirect(r'^projects/minimo(/.*)?$', 'https://wiki.mozilla.org/Mobile'),
redirect(r'^projects/namoroka(/.*)?$', 'firefox.channel.desktop'),
redirect(r'^projects/nspr(?:/.*)?$', 'https://developer.mozilla.org/docs/NSPR'),
redirect(r'^projects/netlib(/.*)?$',
'https://developer.mozilla.org/docs/Mozilla/Projects/Necko'),
redirect(r'^projects/plugins(/.*)?$', 'https://developer.mozilla.org/Add-ons/Plugins'),
redirect(r'^projects/rt-messaging(/.*)?$', 'http://chatzilla.hacksrus.com/'),
redirect(r'^projects/shiretoko(/.*)?$', 'firefox.channel.desktop'),
redirect(r'^projects/string(/.*)?$',
'https://developer.mozilla.org/en/XPCOM_string_guide'),
redirect(r'^projects/tech-evangelism(/.*)?$',
'https://wiki.mozilla.org/Evangelism'),
redirect(r'^projects/venkman(/.*)?$',
'https://developer.mozilla.org/docs/Archive/Mozilla/Venkman'),
redirect(r'^projects/webservices/examples/babelfish-wsdl(/.*)?$',
'https://developer.mozilla.org/docs/SOAP_in_Gecko-based_Browsers'),
redirect(r'^projects/xbl(/.*)?$', 'https://developer.mozilla.org/docs/Mozilla/Tech/XBL'),
redirect(r'^projects/xforms(/.*)?$', 'https://developer.mozilla.org/docs/Archive/Web/XForms'),
redirect(r'^projects/xpcom(/.*)?$', 'https://developer.mozilla.org/docs/Mozilla/Tech/XPCOM'),
redirect(r'^projects/xpinstall(/.*)?$',
'https://developer.mozilla.org/docs/Archive/Mozilla/XPInstall'),
redirect(r'^projects/xslt(/.*)?$', 'https://developer.mozilla.org/docs/Web/XSLT'),
redirect(r'^projects/xul(/.*)?$', 'https://developer.mozilla.org/docs/Mozilla/Tech/XUL'),
redirect(r'^quality/help(/.*)?$', 'http://quality.mozilla.org/get-involved'),
redirect(r'^quality(/.*)?$', 'http://quality.mozilla.org/'),
# Bug 654614 /blocklist -> addons.m.o/blocked
redirect(r'^blocklist(/.*)?$', 'https://addons.mozilla.org/blocked/'),
redirect('^products/firebird$', 'firefox.family.index'),
redirect('^products/firebird/download/$', 'firefox.new'),
redirect('^products/firefox/add-engines\.html$',
'https://addons.mozilla.org/search-engines.php'),
redirect('^products/firefox/all$', '/firefox/all/'),
redirect('^products/firefox/all\.html$', '/firefox/all/'),
redirect('^products/firefox/banners\.html$', '/contribute/friends/'),
redirect('^products/firefox/buttons\.html$', '/contribute/friends/'),
redirect('^products/firefox/download', 'firefox.new'),
redirect('^products/firefox/get$', 'firefox.new'),
redirect('^products/firefox/$', 'firefox.family.index'),
redirect('^products/firefox/live-bookmarks', '/firefox/features/'),
redirect('^products/firefox/mirrors\.html$', 'http://www-archive.mozilla.org/mirrors.html'),
redirect('^products/firefox/releases/$', '/firefox/releases/'),
redirect('^products/firefox/releases/0\.9\.2\.html$',
'http://website-archive.mozilla.org/www.mozilla.org/firefox_releasenotes'
'/en-US/firefox/releases/0.9.1.html'),
redirect('^products/firefox/releases/0\.10\.1\.html$',
'http://website-archive.mozilla.org/www.mozilla.org/firefox_releasenotes'
'/en-US/firefox/releases/0.10.html'),
redirect('^products/firefox/search', '/firefox/features/'),
redirect('^products/firefox/shelf\.html$', 'https://blog.mozilla.org/press/awards/'),
redirect('^products/firefox/smart-keywords\.html$',
'https://support.mozilla.org/en-US/kb/Smart+keywords'),
redirect('^products/firefox/support/$', 'https://support.mozilla.org/'),
redirect('^products/firefox/switch', 'firefox.new'),
redirect('^products/firefox/system-requirements', '/firefox/system-requirements/'),
redirect('^products/firefox/tabbed-browsing', 'firefox.desktop.index'),
redirect('^products/firefox/text-zoom\.html$',
'https://support.mozilla.org/kb/font-size-and-zoom-increase-size-of-web-pages'),
redirect('^products/firefox/themes$', 'https://addons.mozilla.org/themes/'),
redirect('^products/firefox/themes\.html$', 'https://addons.mozilla.org/themes/'),
redirect('^products/firefox/ui-customize\.html$',
'https://support.mozilla.org/kb/customize-firefox-controls-buttons-and-toolbars'),
redirect('^products/firefox/upgrade', 'firefox.new'),
redirect('^products/firefox/why/$', 'firefox.desktop.index'),
# bug 857246 redirect /products/firefox/start/ to start.mozilla.org
redirect(r'^products/firefox/start/?$', 'http://start.mozilla.org'),
redirect(r'^products/firefox', 'firefox.family.index'),
# bug 1260423
redirect(r'^firefox/choose/?$', 'firefox.new'),
# bug 1283397
redirect(r'^firefox/pocket/?$', 'https://getpocket.com/firefox/'),
# bug 1288552 - redirect /secondrun/ traffic from funnelcake test
redirect(r'^firefox(?:\/\d+\.\d+(?:\.\d+)?(?:a\d+)?)?/secondrun(?:/.*)?',
'firefox.mobile-download', query=False),
# bug 1293539
redirect(r'^firefox(?:\/\d+\.\d+(?:\.\d+)?(?:a\d+)?)?/tour/?$',
'https://support.mozilla.org/kb/get-started-firefox-overview-main-features'),
# bug 1295332
redirect(r'^hello/?$', 'https://support.mozilla.org/kb/hello-status'),
redirect(r'^firefox/hello/?$', 'https://support.mozilla.org/kb/hello-status'),
redirect(r'^firefox(?:\/\d+\.\d+(?:\.\d+)?(?:a\d+)?)?/hello/start/?$', 'https://support.mozilla.org/kb/hello-status'),
# bug 1299947
redirect('^firefox/channel/?$', 'firefox.channel.desktop'),
# Bug 1277196
redirect(r'^firefox(?:\/\d+\.\d+(?:\.\d+)?(?:a\d+)?)?/firstrun/learnmore/?$', 'firefox.features'),
redirect(r'^firefox/windows-10/welcome/?$', 'https://support.mozilla.org/kb/how-change-your-default-browser-windows-10'),
)