From b7c32a3a6a74f72e97937a26c6274b9c1d34b0ab Mon Sep 17 00:00:00 2001 From: Aaron Carlino Date: Fri, 13 Dec 2019 16:48:27 +1300 Subject: [PATCH] Redirects --- _redirects | 434 +++++++++++++++++++++++++++++++++++++++++ gatsby-node.js | 28 +++ src/components/SEO.tsx | 7 +- 3 files changed, 467 insertions(+), 2 deletions(-) create mode 100644 _redirects diff --git a/_redirects b/_redirects new file mode 100644 index 0000000..16fc8fd --- /dev/null +++ b/_redirects @@ -0,0 +1,434 @@ + + ### This file is auto-generated. Do not modify ### + + /en/ /en/4/ +/en/getting_started/environment_management/ /en/4/getting_started/environment_management/ +/en/getting_started/directory_structure/ /en/4/getting_started/directory_structure/ +/en/getting_started/ /en/4/getting_started/ +/en/lessons/ /en/4/lessons/ +/en/developer_guides/ /en/4/developer_guides/ +/en/changelogs/3.6.7/ /en/4/changelogs/3.6.7/ +/en/changelogs/3.7.3/ /en/4/changelogs/3.7.3/ +/en/changelogs/4.0.3/ /en/4/changelogs/4.0.3/ +/en/changelogs/4.0.4/ /en/4/changelogs/4.0.4/ +/en/changelogs/4.0.6/ /en/4/changelogs/4.0.6/ +/en/changelogs/4.0.7/ /en/4/changelogs/4.0.7/ +/en/changelogs/4.1.1/ /en/4/changelogs/4.1.1/ +/en/changelogs/4.1.3/ /en/4/changelogs/4.1.3/ +/en/changelogs/4.1.4/ /en/4/changelogs/4.1.4/ +/en/changelogs/4.1.5/ /en/4/changelogs/4.1.5/ +/en/changelogs/4.2.1/ /en/4/changelogs/4.2.1/ +/en/changelogs/4.2.3/ /en/4/changelogs/4.2.3/ +/en/changelogs/4.2.4/ /en/4/changelogs/4.2.4/ +/en/changelogs/4.2.5/ /en/4/changelogs/4.2.5/ +/en/changelogs/4.3.1/ /en/4/changelogs/4.3.1/ +/en/changelogs/4.3.3/ /en/4/changelogs/4.3.3/ +/en/changelogs/4.3.4/ /en/4/changelogs/4.3.4/ +/en/changelogs/4.4.2/ /en/4/changelogs/4.4.2/ +/en/changelogs/4.4.3/ /en/4/changelogs/4.4.3/ +/en/changelogs/4.4.4/ /en/4/changelogs/4.4.4/ +/en/changelogs/4.5.0/ /en/4/changelogs/4.5.0/ +/en/changelogs/ /en/4/changelogs/ +/en/contributing/issues_and_bugs/ /en/4/contributing/issues_and_bugs/ +/en/contributing/request_for_comment/ /en/4/contributing/request_for_comment/ +/en/contributing/build_tooling/ /en/4/contributing/build_tooling/ +/en/contributing/translation_process/ /en/4/contributing/translation_process/ +/en/contributing/core_committers/ /en/4/contributing/core_committers/ +/en/contributing/code_of_conduct/ /en/4/contributing/code_of_conduct/ +/en/contributing/coding_conventions/ /en/4/contributing/coding_conventions/ +/en/contributing/javascript_coding_conventions/ /en/4/contributing/javascript_coding_conventions/ +/en/contributing/css_coding_conventions/ /en/4/contributing/css_coding_conventions/ +/en/contributing/php_coding_conventions/ /en/4/contributing/php_coding_conventions/ +/en/contributing/ /en/4/contributing/ +/en/developer_guides/model/lists/ /en/4/developer_guides/model/lists/ +/en/developer_guides/model/extending_dataobjects/ /en/4/developer_guides/model/extending_dataobjects/ +/en/developer_guides/model/permissions/ /en/4/developer_guides/model/permissions/ +/en/developer_guides/model/searchfilters/ /en/4/developer_guides/model/searchfilters/ +/en/developer_guides/model/scaffolding/ /en/4/developer_guides/model/scaffolding/ +/en/developer_guides/model/validation/ /en/4/developer_guides/model/validation/ +/en/developer_guides/model/indexes/ /en/4/developer_guides/model/indexes/ +/en/developer_guides/model/ /en/4/developer_guides/model/ +/en/developer_guides/templates/rendering_templates/ /en/4/developer_guides/templates/rendering_templates/ +/en/developer_guides/templates/template_inheritance/ /en/4/developer_guides/templates/template_inheritance/ +/en/developer_guides/templates/themes/ /en/4/developer_guides/templates/themes/ +/en/developer_guides/templates/caching/ /en/4/developer_guides/templates/caching/ +/en/developer_guides/templates/translations/ /en/4/developer_guides/templates/translations/ +/en/developer_guides/templates/casting/ /en/4/developer_guides/templates/casting/ +/en/developer_guides/templates/ /en/4/developer_guides/templates/ +/en/developer_guides/controllers/introduction/ /en/4/developer_guides/controllers/introduction/ +/en/developer_guides/controllers/routing/ /en/4/developer_guides/controllers/routing/ +/en/developer_guides/controllers/redirection/ /en/4/developer_guides/controllers/redirection/ +/en/developer_guides/controllers/middlewares/ /en/4/developer_guides/controllers/middlewares/ +/en/developer_guides/controllers/access_control/ /en/4/developer_guides/controllers/access_control/ +/en/developer_guides/controllers/builtin_middlewares/ /en/4/developer_guides/controllers/builtin_middlewares/ +/en/developer_guides/controllers/ /en/4/developer_guides/controllers/ +/en/developer_guides/forms/form_templates/ /en/4/developer_guides/forms/form_templates/ +/en/developer_guides/forms/form_security/ /en/4/developer_guides/forms/form_security/ +/en/developer_guides/forms/form_transformations/ /en/4/developer_guides/forms/form_transformations/ +/en/developer_guides/forms/tabbed_forms/ /en/4/developer_guides/forms/tabbed_forms/ +/en/developer_guides/forms/ /en/4/developer_guides/forms/ +/en/developer_guides/configuration/siteconfig/ /en/4/developer_guides/configuration/siteconfig/ +/en/developer_guides/configuration/environment_variables/ /en/4/developer_guides/configuration/environment_variables/ +/en/developer_guides/configuration/ /en/4/developer_guides/configuration/ +/en/developer_guides/extending/modules/ /en/4/developer_guides/extending/modules/ +/en/developer_guides/extending/shortcodes/ /en/4/developer_guides/extending/shortcodes/ +/en/developer_guides/extending/templates/ /en/4/developer_guides/extending/templates/ +/en/developer_guides/extending/aspects/ /en/4/developer_guides/extending/aspects/ +/en/developer_guides/extending/ /en/4/developer_guides/extending/ +/en/developer_guides/testing/unit_testing/ /en/4/developer_guides/testing/unit_testing/ +/en/developer_guides/testing/behavior_testing/ /en/4/developer_guides/testing/behavior_testing/ +/en/developer_guides/testing/functional_testing/ /en/4/developer_guides/testing/functional_testing/ +/en/developer_guides/testing/testing_glossary/ /en/4/developer_guides/testing/testing_glossary/ +/en/developer_guides/testing/ /en/4/developer_guides/testing/ +/en/developer_guides/debugging/environment_types/ /en/4/developer_guides/debugging/environment_types/ +/en/developer_guides/debugging/url_variable_tools/ /en/4/developer_guides/debugging/url_variable_tools/ +/en/developer_guides/debugging/ /en/4/developer_guides/debugging/ +/en/developer_guides/debugging/template_debugging/ /en/4/developer_guides/debugging/template_debugging/ +/en/developer_guides/performance/profiling/ /en/4/developer_guides/performance/profiling/ +/en/developer_guides/performance/static_publishing/ /en/4/developer_guides/performance/static_publishing/ +/en/developer_guides/performance/resource_usage/ /en/4/developer_guides/performance/resource_usage/ +/en/developer_guides/performance/ /en/4/developer_guides/performance/ +/en/developer_guides/security/member/ /en/4/developer_guides/security/member/ +/en/developer_guides/security/access_control/ /en/4/developer_guides/security/access_control/ +/en/developer_guides/security/permissions/ /en/4/developer_guides/security/permissions/ +/en/developer_guides/security/rate_limiting/ /en/4/developer_guides/security/rate_limiting/ +/en/developer_guides/security/ /en/4/developer_guides/security/ +/en/developer_guides/email/ /en/4/developer_guides/email/ +/en/developer_guides/security/personal_data/ /en/4/developer_guides/security/personal_data/ +/en/developer_guides/integration/csv_import/ /en/4/developer_guides/integration/csv_import/ +/en/developer_guides/integration/rssfeed/ /en/4/developer_guides/integration/rssfeed/ +/en/developer_guides/search/searchcontext/ /en/4/developer_guides/search/searchcontext/ +/en/developer_guides/integration/ /en/4/developer_guides/integration/ +/en/developer_guides/search/fulltextsearch/ /en/4/developer_guides/search/fulltextsearch/ +/en/developer_guides/search/ /en/4/developer_guides/search/ +/en/developer_guides/files/file_storage/ /en/4/developer_guides/files/file_storage/ +/en/developer_guides/files/ /en/4/developer_guides/files/ +/en/developer_guides/customising_the_admin_interface/cms_layout/ /en/4/developer_guides/customising_the_admin_interface/cms_layout/ +/en/developer_guides/customising_the_admin_interface/preview/ /en/4/developer_guides/customising_the_admin_interface/preview/ +/en/developer_guides/customising_the_admin_interface/typography/ /en/4/developer_guides/customising_the_admin_interface/typography/ +/en/developer_guides/customising_the_admin_interface/ /en/4/developer_guides/customising_the_admin_interface/ +/en/developer_guides/execution_pipeline/flushable/ /en/4/developer_guides/execution_pipeline/flushable/ +/en/developer_guides/execution_pipeline/manifests/ /en/4/developer_guides/execution_pipeline/manifests/ +/en/developer_guides/execution_pipeline/ /en/4/developer_guides/execution_pipeline/ +/en/developer_guides/execution_pipeline/app_object_and_kernel/ /en/4/developer_guides/execution_pipeline/app_object_and_kernel/ +/en/developer_guides/cli/ /en/4/developer_guides/cli/ +/en/developer_guides/cookies_and_sessions/cookies/ /en/4/developer_guides/cookies_and_sessions/cookies/ +/en/developer_guides/cookies_and_sessions/sessions/ /en/4/developer_guides/cookies_and_sessions/sessions/ +/en/developer_guides/cookies_and_sessions/ /en/4/developer_guides/cookies_and_sessions/ +/en/changelogs/alpha/4.0.0-alpha2/ /en/4/changelogs/alpha/4.0.0-alpha2/ +/en/changelogs/rc/4.0.0-rc2/ /en/4/changelogs/rc/4.0.0-rc2/ +/en/changelogs/rc/4.0.0-rc3/ /en/4/changelogs/rc/4.0.0-rc3/ +/en/changelogs/rc/4.1.0-rc2/ /en/4/changelogs/rc/4.1.0-rc2/ +/en/developer_guides/model/how_tos/dynamic_default_fields/ /en/4/developer_guides/model/how_tos/dynamic_default_fields/ +/en/developer_guides/model/how_tos/ /en/4/developer_guides/model/how_tos/ +/en/developer_guides/model/how_tos/grouping_dataobject_sets/ /en/4/developer_guides/model/how_tos/grouping_dataobject_sets/ +/en/developer_guides/templates/how_tos/pagination/ /en/4/developer_guides/templates/how_tos/pagination/ +/en/developer_guides/templates/how_tos/navigation_menu/ /en/4/developer_guides/templates/how_tos/navigation_menu/ +/en/developer_guides/templates/how_tos/disable_anchor_links/ /en/4/developer_guides/templates/how_tos/disable_anchor_links/ +/en/developer_guides/forms/field_types/datefield/ /en/4/developer_guides/forms/field_types/datefield/ +/en/developer_guides/forms/field_types/common_subclasses/ /en/4/developer_guides/forms/field_types/common_subclasses/ +/en/developer_guides/forms/field_types/ /en/4/developer_guides/forms/field_types/ +/en/developer_guides/forms/how_tos/encapsulate_forms/ /en/4/developer_guides/forms/how_tos/encapsulate_forms/ +/en/developer_guides/forms/how_tos/create_a_gridfieldcomponent/ /en/4/developer_guides/forms/how_tos/create_a_gridfieldcomponent/ +/en/developer_guides/forms/how_tos/lightweight_form/ /en/4/developer_guides/forms/how_tos/lightweight_form/ +/en/developer_guides/templates/how_tos/ /en/4/developer_guides/templates/how_tos/ +/en/developer_guides/forms/how_tos/simple_contact_form/ /en/4/developer_guides/forms/how_tos/simple_contact_form/ +/en/developer_guides/forms/how_tos/ /en/4/developer_guides/forms/how_tos/ +/en/developer_guides/extending/how_tos/publish_a_module/ /en/4/developer_guides/extending/how_tos/publish_a_module/ +/en/developer_guides/extending/how_tos/create_a_google_maps_shortcode/ /en/4/developer_guides/extending/how_tos/create_a_google_maps_shortcode/ +/en/developer_guides/extending/how_tos/track_member_logins/ /en/4/developer_guides/extending/how_tos/track_member_logins/ +/en/developer_guides/extending/how_tos/ /en/4/developer_guides/extending/how_tos/ +/en/developer_guides/testing/how_tos/write_a_sapphiretest/ /en/4/developer_guides/testing/how_tos/write_a_sapphiretest/ +/en/developer_guides/testing/how_tos/write_a_functionaltest/ /en/4/developer_guides/testing/how_tos/write_a_functionaltest/ +/en/developer_guides/testing/how_tos/fixturefactories/ /en/4/developer_guides/testing/how_tos/fixturefactories/ +/en/developer_guides/testing/how_tos/testing_email/ /en/4/developer_guides/testing/how_tos/testing_email/ +/en/developer_guides/testing/how_tos/ /en/4/developer_guides/testing/how_tos/ +/en/developer_guides/integration/how_tos/import_csv_through_a_controller/ /en/4/developer_guides/integration/how_tos/import_csv_through_a_controller/ +/en/developer_guides/integration/how_tos/custom_csvbulkloader/ /en/4/developer_guides/integration/how_tos/custom_csvbulkloader/ +/en/developer_guides/integration/how_tos/ /en/4/developer_guides/integration/how_tos/ +/en/developer_guides/customising_the_admin_interface/how_tos/cms_alternating_button/ /en/4/developer_guides/customising_the_admin_interface/how_tos/cms_alternating_button/ +/en/developer_guides/customising_the_admin_interface/how_tos/cms_formfield_help_text/ /en/4/developer_guides/customising_the_admin_interface/how_tos/cms_formfield_help_text/ +/en/developer_guides/customising_the_admin_interface/how_tos/customise_cms_menu/ /en/4/developer_guides/customising_the_admin_interface/how_tos/customise_cms_menu/ +/en/developer_guides/customising_the_admin_interface/how_tos/customise_cms_pages_list/ /en/4/developer_guides/customising_the_admin_interface/how_tos/customise_cms_pages_list/ +/en/developer_guides/customising_the_admin_interface/how_tos/customise_cms_tree/ /en/4/developer_guides/customising_the_admin_interface/how_tos/customise_cms_tree/ +/en/developer_guides/customising_the_admin_interface/how_tos/customise_react_components/ /en/4/developer_guides/customising_the_admin_interface/how_tos/customise_react_components/ +/en/developer_guides/customising_the_admin_interface/how_tos/customise_react_forms/ /en/4/developer_guides/customising_the_admin_interface/how_tos/customise_react_forms/ +/en/developer_guides/customising_the_admin_interface/how_tos/customise_site_reports/ /en/4/developer_guides/customising_the_admin_interface/how_tos/customise_site_reports/ +/en/developer_guides/customising_the_admin_interface/how_tos/extending_an_existing_modeladmin/ /en/4/developer_guides/customising_the_admin_interface/how_tos/extending_an_existing_modeladmin/ +/en/developer_guides/customising_the_admin_interface/how_tos/ /en/4/developer_guides/customising_the_admin_interface/how_tos/ +/en/getting_started/server_requirements/ /en/4/getting_started/server_requirements/ +/en/upgrading/upgrading_module/ /en/4/upgrading/upgrading_module/ +/en/changelogs/4.0.1/ /en/4/changelogs/4.0.1/ +/en/changelogs/4.0.2/ /en/4/changelogs/4.0.2/ +/en/changelogs/4.1.2/ /en/4/changelogs/4.1.2/ +/en/changelogs/4.2.2/ /en/4/changelogs/4.2.2/ +/en/changelogs/4.3.6/ /en/4/changelogs/4.3.6/ +/en/changelogs/4.4.1/ /en/4/changelogs/4.4.1/ +/en/contributing/code/ /en/4/contributing/code/ +/en/contributing/release_process/ /en/4/contributing/release_process/ +/en/contributing/documentation/ /en/4/contributing/documentation/ +/en/contributing/translations/ /en/4/contributing/translations/ +/en/developer_guides/model/data_types_and_casting/ /en/4/developer_guides/model/data_types_and_casting/ +/en/developer_guides/model/sql_select/ /en/4/developer_guides/model/sql_select/ +/en/developer_guides/templates/common_variables/ /en/4/developer_guides/templates/common_variables/ +/en/developer_guides/templates/syntax/ /en/4/developer_guides/templates/syntax/ +/en/developer_guides/forms/introduction/ /en/4/developer_guides/forms/introduction/ +/en/developer_guides/forms/validation/ /en/4/developer_guides/forms/validation/ +/en/developer_guides/configuration/configuration/ /en/4/developer_guides/configuration/configuration/ +/en/developer_guides/extending/extensions/ /en/4/developer_guides/extending/extensions/ +/en/developer_guides/extending/injector/ /en/4/developer_guides/extending/injector/ +/en/developer_guides/testing/fixtures/ /en/4/developer_guides/testing/fixtures/ +/en/developer_guides/debugging/error_handling/ /en/4/developer_guides/debugging/error_handling/ +/en/developer_guides/performance/partial_caching/ /en/4/developer_guides/performance/partial_caching/ +/en/developer_guides/performance/caching/ /en/4/developer_guides/performance/caching/ +/en/developer_guides/performance/http_cache_headers/ /en/4/developer_guides/performance/http_cache_headers/ +/en/developer_guides/security/authentication/ /en/4/developer_guides/security/authentication/ +/en/developer_guides/files/images/ /en/4/developer_guides/files/images/ +/en/developer_guides/files/file_management/ /en/4/developer_guides/files/file_management/ +/en/developer_guides/customising_the_admin_interface/modeladmin/ /en/4/developer_guides/customising_the_admin_interface/modeladmin/ +/en/changelogs/rc/4.0.1-rc1/ /en/4/changelogs/rc/4.0.1-rc1/ +/en/developer_guides/forms/field_types/htmleditorfield/ /en/4/developer_guides/forms/field_types/htmleditorfield/ +/en/developer_guides/forms/how_tos/create_a_gridfield_actionprovider/ /en/4/developer_guides/forms/how_tos/create_a_gridfield_actionprovider/ +/en/developer_guides/customising_the_admin_interface/how_tos/extend_cms_interface/ /en/4/developer_guides/customising_the_admin_interface/how_tos/extend_cms_interface/ +/en/getting_started/composer/ /en/4/getting_started/composer/ +/en/changelogs/4.0.5/ /en/4/changelogs/4.0.5/ +/en/changelogs/4.3.2/ /en/4/changelogs/4.3.2/ +/en/developer_guides/model/data_model_and_orm/ /en/4/developer_guides/model/data_model_and_orm/ +/en/developer_guides/model/relations/ /en/4/developer_guides/model/relations/ +/en/developer_guides/templates/requirements/ /en/4/developer_guides/templates/requirements/ +/en/developer_guides/files/file_migration/ /en/4/developer_guides/files/file_migration/ +/en/developer_guides/files/file_security/ /en/4/developer_guides/files/file_security/ +/en/developer_guides/i18n/ /en/4/developer_guides/i18n/ +/en/developer_guides/customising_the_admin_interface/javascript_development/ /en/4/developer_guides/customising_the_admin_interface/javascript_development/ +/en/changelogs/alpha/4.0.0-alpha3/ /en/4/changelogs/alpha/4.0.0-alpha3/ +/en/changelogs/rc/4.1.0-rc1/ /en/4/changelogs/rc/4.1.0-rc1/ +/en/developer_guides/forms/field_types/gridfield/ /en/4/developer_guides/forms/field_types/gridfield/ +/en/contributing/making_a_silverstripe_core_release/ /en/4/contributing/making_a_silverstripe_core_release/ +/en/changelogs/alpha/4.5.0-alpha1/ /en/4/changelogs/alpha/4.5.0-alpha1/ +/en/changelogs/beta/4.0.0-beta2/ /en/4/changelogs/beta/4.0.0-beta2/ +/en/changelogs/beta/4.0.0-beta3/ /en/4/changelogs/beta/4.0.0-beta3/ +/en/changelogs/beta/4.0.0-beta4/ /en/4/changelogs/beta/4.0.0-beta4/ +/en/changelogs/rc/4.5.0-rc1/ /en/4/changelogs/rc/4.5.0-rc1/ +/en/developer_guides/security/secure_coding/ /en/4/developer_guides/security/secure_coding/ +/en/developer_guides/customising_the_admin_interface/cms_architecture/ /en/4/developer_guides/customising_the_admin_interface/cms_architecture/ +/en/changelogs/alpha/4.0.0-alpha4/ /en/4/changelogs/alpha/4.0.0-alpha4/ +/en/changelogs/beta/4.2.0-beta1/ /en/4/changelogs/beta/4.2.0-beta1/ +/en/changelogs/4.1.0/ /en/4/changelogs/4.1.0/ +/en/changelogs/4.3.0/ /en/4/changelogs/4.3.0/ +/en/developer_guides/model/versioning/ /en/4/developer_guides/model/versioning/ +/en/developer_guides/customising_the_admin_interface/reactjs_redux_and_graphql/ /en/4/developer_guides/customising_the_admin_interface/reactjs_redux_and_graphql/ +/en/upgrading/upgrading_project/ /en/4/upgrading/upgrading_project/ +/en/upgrading/ /en/4/upgrading/ +/en/changelogs/4.2.0/ /en/4/changelogs/4.2.0/ +/en/changelogs/rc/4.3.0-rc1/ /en/4/changelogs/rc/4.3.0-rc1/ +/en/changelogs/rc/4.4.0-rc1/ /en/4/changelogs/rc/4.4.0-rc1/ +/en/changelogs/4.4.0/ /en/4/changelogs/4.4.0/ +/en/changelogs/alpha/4.0.0-alpha1/ /en/4/changelogs/alpha/4.0.0-alpha1/ +/en/changelogs/alpha/4.0.0-alpha5/ /en/4/changelogs/alpha/4.0.0-alpha5/ +/en/changelogs/alpha/4.0.0-alpha6/ /en/4/changelogs/alpha/4.0.0-alpha6/ +/en/changelogs/alpha/4.0.0-alpha7/ /en/4/changelogs/alpha/4.0.0-alpha7/ +/en/changelogs/beta/4.0.0-beta1/ /en/4/changelogs/beta/4.0.0-beta1/ +/en/changelogs/rc/4.0.0-rc1/ /en/4/changelogs/rc/4.0.0-rc1/ +/en/changelogs/4.0.0/ /en/4/changelogs/4.0.0/ +/en/tutorials/ /en/3/tutorials/ +/en/getting_started/installation/linux_unix/ /en/3/getting_started/installation/linux_unix/ +/en/getting_started/installation/mac_osx/ /en/3/getting_started/installation/mac_osx/ +/en/tutorials/site_search/ /en/3/tutorials/site_search/ +/en/getting_started/installation/windows/ /en/3/getting_started/installation/windows/ +/en/getting_started/installation/common_problems/ /en/3/getting_started/installation/common_problems/ +/en/getting_started/installation/ /en/3/getting_started/installation/ +/en/changelogs/3.0.10/ /en/3/changelogs/3.0.10/ +/en/changelogs/3.0.11/ /en/3/changelogs/3.0.11/ +/en/changelogs/3.0.5/ /en/3/changelogs/3.0.5/ +/en/changelogs/3.0.6/ /en/3/changelogs/3.0.6/ +/en/changelogs/3.0.7/ /en/3/changelogs/3.0.7/ +/en/changelogs/3.0.8/ /en/3/changelogs/3.0.8/ +/en/changelogs/3.0.9/ /en/3/changelogs/3.0.9/ +/en/changelogs/3.1.1/ /en/3/changelogs/3.1.1/ +/en/changelogs/3.1.10/ /en/3/changelogs/3.1.10/ +/en/changelogs/3.1.11/ /en/3/changelogs/3.1.11/ +/en/changelogs/3.1.14/ /en/3/changelogs/3.1.14/ +/en/changelogs/3.1.16/ /en/3/changelogs/3.1.16/ +/en/changelogs/3.1.17/ /en/3/changelogs/3.1.17/ +/en/changelogs/3.1.15/ /en/3/changelogs/3.1.15/ +/en/changelogs/3.1.12/ /en/3/changelogs/3.1.12/ +/en/changelogs/3.1.18/ /en/3/changelogs/3.1.18/ +/en/changelogs/3.1.13/ /en/3/changelogs/3.1.13/ +/en/changelogs/3.1.21/ /en/3/changelogs/3.1.21/ +/en/changelogs/3.1.20/ /en/3/changelogs/3.1.20/ +/en/changelogs/3.1.3/ /en/3/changelogs/3.1.3/ +/en/changelogs/3.1.5/ /en/3/changelogs/3.1.5/ +/en/changelogs/3.1.4/ /en/3/changelogs/3.1.4/ +/en/changelogs/3.1.7/ /en/3/changelogs/3.1.7/ +/en/changelogs/3.1.19/ /en/3/changelogs/3.1.19/ +/en/changelogs/3.1.6/ /en/3/changelogs/3.1.6/ +/en/changelogs/3.1.9/ /en/3/changelogs/3.1.9/ +/en/changelogs/3.2.2/ /en/3/changelogs/3.2.2/ +/en/changelogs/3.1.8/ /en/3/changelogs/3.1.8/ +/en/changelogs/3.2.1/ /en/3/changelogs/3.2.1/ +/en/changelogs/3.2.3/ /en/3/changelogs/3.2.3/ +/en/changelogs/3.2.4/ /en/3/changelogs/3.2.4/ +/en/changelogs/3.2.5/ /en/3/changelogs/3.2.5/ +/en/changelogs/3.3.1/ /en/3/changelogs/3.3.1/ +/en/changelogs/3.2.6/ /en/3/changelogs/3.2.6/ +/en/changelogs/3.4.3/ /en/3/changelogs/3.4.3/ +/en/changelogs/3.4.4/ /en/3/changelogs/3.4.4/ +/en/changelogs/3.4.5/ /en/3/changelogs/3.4.5/ +/en/changelogs/3.4.6/ /en/3/changelogs/3.4.6/ +/en/changelogs/3.5.1/ /en/3/changelogs/3.5.1/ +/en/changelogs/3.5.2/ /en/3/changelogs/3.5.2/ +/en/changelogs/3.5.4/ /en/3/changelogs/3.5.4/ +/en/changelogs/3.5.3/ /en/3/changelogs/3.5.3/ +/en/changelogs/3.5.6/ /en/3/changelogs/3.5.6/ +/en/changelogs/3.5.7/ /en/3/changelogs/3.5.7/ +/en/changelogs/3.5.8/ /en/3/changelogs/3.5.8/ +/en/changelogs/3.6.0/ /en/3/changelogs/3.6.0/ +/en/changelogs/3.5.5/ /en/3/changelogs/3.5.5/ +/en/changelogs/3.6.1/ /en/3/changelogs/3.6.1/ +/en/changelogs/3.3.4/ /en/3/changelogs/3.3.4/ +/en/changelogs/3.6.2/ /en/3/changelogs/3.6.2/ +/en/changelogs/3.6.3/ /en/3/changelogs/3.6.3/ +/en/changelogs/3.6.4/ /en/3/changelogs/3.6.4/ +/en/changelogs/3.6.5/ /en/3/changelogs/3.6.5/ +/en/changelogs/3.6.6/ /en/3/changelogs/3.6.6/ +/en/changelogs/3.7.1/ /en/3/changelogs/3.7.1/ +/en/changelogs/3.7.2/ /en/3/changelogs/3.7.2/ +/en/changelogs/3.7.4/ /en/3/changelogs/3.7.4/ +/en/getting_started/installation/other_installation_options/mac_osx_homebrew/ /en/3/getting_started/installation/other_installation_options/mac_osx_homebrew/ +/en/getting_started/installation/how_to/setup_nginx_and_hhvm/ /en/3/getting_started/installation/how_to/setup_nginx_and_hhvm/ +/en/getting_started/installation/other_installation_options/vagrant_virtualbox/ /en/3/getting_started/installation/other_installation_options/vagrant_virtualbox/ +/en/getting_started/installation/how_to/configure_lighttpd/ /en/3/getting_started/installation/how_to/configure_lighttpd/ +/en/getting_started/installation/how_to/configure_nginx/ /en/3/getting_started/installation/how_to/configure_nginx/ +/en/getting_started/installation/how_to/ /en/3/getting_started/installation/how_to/ +/en/getting_started/installation/how_to/mysql_ssl_support/ /en/3/getting_started/installation/how_to/mysql_ssl_support/ +/en/developer_guides/controllers/requestfilters/ /en/3/developer_guides/controllers/requestfilters/ +/en/developer_guides/integration/restfulservice/ /en/3/developer_guides/integration/restfulservice/ +/en/changelogs/alpha/3.6.1-alpha1/ /en/3/changelogs/alpha/3.6.1-alpha1/ +/en/changelogs/alpha/3.6.1-alpha2/ /en/3/changelogs/alpha/3.6.1-alpha2/ +/en/changelogs/beta/3.5.5-beta1/ /en/3/changelogs/beta/3.5.5-beta1/ +/en/changelogs/beta/3.2.0-beta2/ /en/3/changelogs/beta/3.2.0-beta2/ +/en/changelogs/beta/3.5.5-beta2/ /en/3/changelogs/beta/3.5.5-beta2/ +/en/changelogs/beta/3.6.0-beta1/ /en/3/changelogs/beta/3.6.0-beta1/ +/en/changelogs/beta/3.6.2-beta2/ /en/3/changelogs/beta/3.6.2-beta2/ +/en/changelogs/beta/3.6.2-beta1/ /en/3/changelogs/beta/3.6.2-beta1/ +/en/changelogs/beta/3.6.0-beta2/ /en/3/changelogs/beta/3.6.0-beta2/ +/en/changelogs/rc/3.0.0-rc2/ /en/3/changelogs/rc/3.0.0-rc2/ +/en/changelogs/rc/3.0.0-rc3/ /en/3/changelogs/rc/3.0.0-rc3/ +/en/changelogs/rc/3.0.1-rc2/ /en/3/changelogs/rc/3.0.1-rc2/ +/en/changelogs/rc/3.0.1-rc3/ /en/3/changelogs/rc/3.0.1-rc3/ +/en/changelogs/rc/3.0.10-rc1/ /en/3/changelogs/rc/3.0.10-rc1/ +/en/changelogs/rc/3.0.11-rc1/ /en/3/changelogs/rc/3.0.11-rc1/ +/en/changelogs/rc/3.0.2-rc2/ /en/3/changelogs/rc/3.0.2-rc2/ +/en/changelogs/rc/3.0.3-rc2/ /en/3/changelogs/rc/3.0.3-rc2/ +/en/changelogs/rc/3.0.7-rc1/ /en/3/changelogs/rc/3.0.7-rc1/ +/en/changelogs/rc/3.0.6-rc2/ /en/3/changelogs/rc/3.0.6-rc2/ +/en/changelogs/rc/3.0.9-rc1/ /en/3/changelogs/rc/3.0.9-rc1/ +/en/changelogs/rc/3.1.0-rc3/ /en/3/changelogs/rc/3.1.0-rc3/ +/en/changelogs/rc/3.1.0-rc2/ /en/3/changelogs/rc/3.1.0-rc2/ +/en/changelogs/rc/3.1.10-rc1/ /en/3/changelogs/rc/3.1.10-rc1/ +/en/changelogs/rc/3.1.10-rc2/ /en/3/changelogs/rc/3.1.10-rc2/ +/en/changelogs/rc/3.1.11-rc1/ /en/3/changelogs/rc/3.1.11-rc1/ +/en/changelogs/rc/3.1.14-rc1/ /en/3/changelogs/rc/3.1.14-rc1/ +/en/changelogs/rc/3.1.13-rc1/ /en/3/changelogs/rc/3.1.13-rc1/ +/en/changelogs/rc/3.1.16-rc1/ /en/3/changelogs/rc/3.1.16-rc1/ +/en/changelogs/rc/3.1.17-rc2/ /en/3/changelogs/rc/3.1.17-rc2/ +/en/changelogs/rc/3.1.17-rc1/ /en/3/changelogs/rc/3.1.17-rc1/ +/en/changelogs/rc/3.1.18-rc1/ /en/3/changelogs/rc/3.1.18-rc1/ +/en/changelogs/rc/3.1.19-rc1/ /en/3/changelogs/rc/3.1.19-rc1/ +/en/changelogs/rc/3.1.18-rc2/ /en/3/changelogs/rc/3.1.18-rc2/ +/en/changelogs/rc/3.1.20-rc1/ /en/3/changelogs/rc/3.1.20-rc1/ +/en/changelogs/rc/3.1.20-rc2/ /en/3/changelogs/rc/3.1.20-rc2/ +/en/changelogs/rc/3.1.3-rc2/ /en/3/changelogs/rc/3.1.3-rc2/ +/en/changelogs/rc/3.1.3-rc1/ /en/3/changelogs/rc/3.1.3-rc1/ +/en/changelogs/rc/3.1.4-rc1/ /en/3/changelogs/rc/3.1.4-rc1/ +/en/changelogs/rc/3.1.5-rc1/ /en/3/changelogs/rc/3.1.5-rc1/ +/en/changelogs/rc/3.1.6-rc1/ /en/3/changelogs/rc/3.1.6-rc1/ +/en/changelogs/rc/3.1.6-rc3/ /en/3/changelogs/rc/3.1.6-rc3/ +/en/changelogs/rc/3.1.6-rc2/ /en/3/changelogs/rc/3.1.6-rc2/ +/en/changelogs/rc/3.1.7-rc1/ /en/3/changelogs/rc/3.1.7-rc1/ +/en/changelogs/rc/3.1.9-rc1/ /en/3/changelogs/rc/3.1.9-rc1/ +/en/changelogs/rc/3.2.0-rc1/ /en/3/changelogs/rc/3.2.0-rc1/ +/en/changelogs/rc/3.2.0-rc2/ /en/3/changelogs/rc/3.2.0-rc2/ +/en/changelogs/rc/3.2.1-rc1/ /en/3/changelogs/rc/3.2.1-rc1/ +/en/changelogs/rc/3.2.2-rc1/ /en/3/changelogs/rc/3.2.2-rc1/ +/en/changelogs/rc/3.2.1-rc2/ /en/3/changelogs/rc/3.2.1-rc2/ +/en/changelogs/rc/3.2.2-rc2/ /en/3/changelogs/rc/3.2.2-rc2/ +/en/changelogs/rc/3.2.3-rc1/ /en/3/changelogs/rc/3.2.3-rc1/ +/en/changelogs/rc/3.2.3-rc2/ /en/3/changelogs/rc/3.2.3-rc2/ +/en/changelogs/rc/3.2.4-rc1/ /en/3/changelogs/rc/3.2.4-rc1/ +/en/changelogs/rc/3.2.5-rc1/ /en/3/changelogs/rc/3.2.5-rc1/ +/en/changelogs/rc/3.2.5-rc2/ /en/3/changelogs/rc/3.2.5-rc2/ +/en/changelogs/rc/3.3.0-rc1/ /en/3/changelogs/rc/3.3.0-rc1/ +/en/changelogs/rc/3.3.0-rc2/ /en/3/changelogs/rc/3.3.0-rc2/ +/en/changelogs/rc/3.3.0-rc3/ /en/3/changelogs/rc/3.3.0-rc3/ +/en/changelogs/rc/3.3.1-rc2/ /en/3/changelogs/rc/3.3.1-rc2/ +/en/changelogs/rc/3.3.1-rc1/ /en/3/changelogs/rc/3.3.1-rc1/ +/en/changelogs/rc/3.3.3-rc2/ /en/3/changelogs/rc/3.3.3-rc2/ +/en/changelogs/rc/3.3.3-rc1/ /en/3/changelogs/rc/3.3.3-rc1/ +/en/changelogs/rc/3.4.1-rc2/ /en/3/changelogs/rc/3.4.1-rc2/ +/en/changelogs/rc/3.4.1-rc1/ /en/3/changelogs/rc/3.4.1-rc1/ +/en/changelogs/rc/3.4.3-rc1/ /en/3/changelogs/rc/3.4.3-rc1/ +/en/changelogs/rc/3.4.5-rc1/ /en/3/changelogs/rc/3.4.5-rc1/ +/en/changelogs/rc/3.4.4-rc1/ /en/3/changelogs/rc/3.4.4-rc1/ +/en/changelogs/rc/3.4.6-rc1/ /en/3/changelogs/rc/3.4.6-rc1/ +/en/changelogs/rc/3.4.6-rc2/ /en/3/changelogs/rc/3.4.6-rc2/ +/en/changelogs/rc/3.5.0-rc3/ /en/3/changelogs/rc/3.5.0-rc3/ +/en/changelogs/rc/3.5.0-rc2/ /en/3/changelogs/rc/3.5.0-rc2/ +/en/changelogs/rc/3.5.1-rc1/ /en/3/changelogs/rc/3.5.1-rc1/ +/en/changelogs/rc/3.5.1-rc2/ /en/3/changelogs/rc/3.5.1-rc2/ +/en/changelogs/rc/3.5.2-rc1/ /en/3/changelogs/rc/3.5.2-rc1/ +/en/changelogs/rc/3.5.4-rc1/ /en/3/changelogs/rc/3.5.4-rc1/ +/en/changelogs/rc/3.5.3-rc1/ /en/3/changelogs/rc/3.5.3-rc1/ +/en/changelogs/rc/3.5.6-rc1/ /en/3/changelogs/rc/3.5.6-rc1/ +/en/changelogs/rc/3.5.8-rc1/ /en/3/changelogs/rc/3.5.8-rc1/ +/en/changelogs/rc/3.6.0-rc1/ /en/3/changelogs/rc/3.6.0-rc1/ +/en/changelogs/rc/3.6.3-rc2/ /en/3/changelogs/rc/3.6.3-rc2/ +/en/changelogs/rc/3.6.6-rc1/ /en/3/changelogs/rc/3.6.6-rc1/ +/en/changelogs/rc/3.7.1-rc1/ /en/3/changelogs/rc/3.7.1-rc1/ +/en/developer_guides/integration/how_tos/embed_rss/ /en/3/developer_guides/integration/how_tos/embed_rss/ +/en/getting_started/coding_conventions/ /en/3/getting_started/coding_conventions/ +/en/tutorials/forms/ /en/3/tutorials/forms/ +/en/tutorials/dataobject_relationship_management/ /en/3/tutorials/dataobject_relationship_management/ +/en/changelogs/3.3.0/ /en/3/changelogs/3.3.0/ +/en/changelogs/3.3.3/ /en/3/changelogs/3.3.3/ +/en/changelogs/3.3.2/ /en/3/changelogs/3.3.2/ +/en/changelogs/3.4.0/ /en/3/changelogs/3.4.0/ +/en/changelogs/3.4.2/ /en/3/changelogs/3.4.2/ +/en/changelogs/3.4.1/ /en/3/changelogs/3.4.1/ +/en/changelogs/3.7.0/ /en/3/changelogs/3.7.0/ +/en/developer_guides/model/sql_query/ /en/3/developer_guides/model/sql_query/ +/en/changelogs/beta/3.3.0-beta1/ /en/3/changelogs/beta/3.3.0-beta1/ +/en/changelogs/rc/3.0.6-rc1/ /en/3/changelogs/rc/3.0.6-rc1/ +/en/changelogs/rc/3.3.2-rc1/ /en/3/changelogs/rc/3.3.2-rc1/ +/en/changelogs/rc/3.4.0-rc1/ /en/3/changelogs/rc/3.4.0-rc1/ +/en/changelogs/rc/3.5.0-rc1/ /en/3/changelogs/rc/3.5.0-rc1/ +/en/developer_guides/forms/field_types/uploadfield/ /en/3/developer_guides/forms/field_types/uploadfield/ +/en/tutorials/building_a_basic_site/ /en/3/tutorials/building_a_basic_site/ +/en/tutorials/extending_a_basic_site/ /en/3/tutorials/extending_a_basic_site/ +/en/changelogs/3.0.4/ /en/3/changelogs/3.0.4/ +/en/changelogs/3.1.2/ /en/3/changelogs/3.1.2/ +/en/changelogs/3.1.0/ /en/3/changelogs/3.1.0/ +/en/changelogs/3.5.0/ /en/3/changelogs/3.5.0/ +/en/getting_started/installation/other_installation_options/windows_iis7/ /en/3/getting_started/installation/other_installation_options/windows_iis7/ +/en/changelogs/beta/3.1.0-beta3/ /en/3/changelogs/beta/3.1.0-beta3/ +/en/changelogs/rc/3.1.2-rc1/ /en/3/changelogs/rc/3.1.2-rc1/ +/en/changelogs/3.0.1/ /en/3/changelogs/3.0.1/ +/en/changelogs/rc/3.0.1-rc1/ /en/3/changelogs/rc/3.0.1-rc1/ +/en/changelogs/rc/3.1.0-rc1/ /en/3/changelogs/rc/3.1.0-rc1/ +/en/changelogs/3.0.0/ /en/3/changelogs/3.0.0/ +/en/changelogs/3.0.2/ /en/3/changelogs/3.0.2/ +/en/changelogs/3.0.3/ /en/3/changelogs/3.0.3/ +/en/changelogs/rc/3.0.0-rc1/ /en/3/changelogs/rc/3.0.0-rc1/ +/en/changelogs/rc/3.0.2-rc1/ /en/3/changelogs/rc/3.0.2-rc1/ +/en/changelogs/rc/3.0.3-rc1/ /en/3/changelogs/rc/3.0.3-rc1/ +/en/changelogs/alpha/3.0.0-alpha1/ /en/3/changelogs/alpha/3.0.0-alpha1/ +/en/changelogs/beta/3.1.0-beta2/ /en/3/changelogs/beta/3.1.0-beta2/ +/en/changelogs/beta/3.1.0-beta1/ /en/3/changelogs/beta/3.1.0-beta1/ +/en/changelogs/beta/3.2.0-beta1/ /en/3/changelogs/beta/3.2.0-beta1/ +/en/changelogs/3.2.0/ /en/3/changelogs/3.2.0/ +/en/changelogs/alpha/3.0.0-alpha2/ /en/3/changelogs/alpha/3.0.0-alpha2/ +/en/changelogs/beta/3.0.0-beta3/ /en/3/changelogs/beta/3.0.0-beta3/ +/en/changelogs/beta/3.0.0-beta2/ /en/3/changelogs/beta/3.0.0-beta2/ +/en/changelogs/beta/3.0.0-beta1/ /en/3/changelogs/beta/3.0.0-beta1/ +/en/changelogs/pr/3.0.0-pr1/ /en/3/changelogs/pr/3.0.0-pr1/ + \ No newline at end of file diff --git a/gatsby-node.js b/gatsby-node.js index 3aeeef5..cb84dd0 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -1,4 +1,5 @@ const path = require('path'); +const fs = require('fs'); const { createFilePath } = require(`gatsby-source-filesystem`); const fileToTitle = require('./src/utils/fileToTitle'); @@ -116,3 +117,30 @@ exports.createPages = async ({ actions, graphql }) => { }) }; + +exports.onPostBuild = async ({ getNodesByType }) => { + console.log(`Writing legacy redirects...`); + const redirects = new Map(); + const v4docs = getNodesByType('SilverstripeDocument').filter(n => n.slug.match(/^\/en\/4\//)); + const v3docs = getNodesByType('SilverstripeDocument').filter(n => n.slug.match(/^\/en\/3\//)); + + [...v4docs, ...v3docs].forEach(n => { + const legacy = n.slug.replace(/^\/en\/[0-9]\//, '/en/'); + if (!redirects.has(legacy)) { + redirects.set(legacy, n.slug); + } + }); + const lines = []; + redirects.forEach((slug, legacy) => { + lines.push(`${legacy} ${slug}`); + }); + + fs.writeFileSync(path.join(__dirname, '_redirects'), + `### This file is auto-generated. Do not modify ### + + ${lines.join("\n")}` + ); + + + return Promise.resolve(); +} diff --git a/src/components/SEO.tsx b/src/components/SEO.tsx index e5f1255..568d159 100644 --- a/src/components/SEO.tsx +++ b/src/components/SEO.tsx @@ -76,8 +76,11 @@ const SEO: StatelessComponent = ({ description, lang, meta, title }) = { name: `docsearch:version`, content: getCurrentVersion(), - - } + }, + { + name: `docsearch:context`, + content: process.env.DOCS_CONTEXT, + }, ].concat(meta)} /> );