This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git


The following commit(s) were added to refs/heads/master by this push:
     new e632b827283 [Feature](website) Retire the deprecated /learning, 
/archive-docs and /vendors pages (#4040)
e632b827283 is described below

commit e632b827283f2f84bf164e6ebea4f03b0dab2d2b
Author: Mingyu Chen (Rayner) <[email protected]>
AuthorDate: Thu Aug 6 17:34:01 2026 +0800

    [Feature](website) Retire the deprecated /learning, /archive-docs and 
/vendors pages (#4040)
    
    ## What
    
    Three standalone pages have no inbound link anywhere on the site.
    `/learning` lost its footer entry back in #1461; `/archive-docs` and
    `/vendors` lost theirs in the new-homepage refactor (#3660). Their
    content has gone stale as well — `/learning` links to pre-4.x doc slugs
    that no longer exist, and `/archive-docs` still calls 3.0 the "latest
    version".
    
    | Page | Action | Redirect |
    | --- | --- | --- |
    | `/learning` | page removed | → `/course` |
    | `/archive-docs` | page removed | none (404) |
    | `/vendors` | source parked, route removed | → `/` |
    
    Details:
    
    - **`/learning`** — removed along with its 10 exclusive sitemap icons.
    Doris 101 is now the entry point for newcomers.
    - **`/archive-docs`** — removed, together with its exclusive `pdf.svg`,
    the unused `ARCHIVE_PATH` constant and 17 orphaned `archive.*` zh-CN
    translation keys. The v2.0 PDF it linked stays reachable from the
    download page.
    - **`/vendors`** — source parked at `src/pages/_vendors` (underscore =
    not routed) so the content is preserved, while the route redirects to
    the homepage. `plugin-client-redirects` drops any redirect that would
    override a live route, so the page has to leave the route table for the
    redirect to apply.
    - **`src/pages/_download`** — removed. Underscore-prefixed, so it was
    never built; it was the last importer of `src/components/More` and
    `src/components/PageColumn`, which are now unreferenced (left in place
    for a follow-up).
    
    `createRedirects()` previously normalized the site root to an empty
    string, which meant no redirect could ever target the homepage. It now
    keeps `/`.
    
    ## Testing
    
    Production-shaped build (`--locale en --locale zh-CN`):
    
    | From | EN | ZH |
    | --- | --- | --- |
    | `/learning` | → `/course/` | → `/zh-CN/course/` |
    | `/vendors` | → `/` | → `/zh-CN/` |
    
    `/archive-docs`, `/_vendors` and `/_download` produce no route; `/`,
    `/course`, `/download`, `/events`, `/why-doris/users` and
    `/profile-analysis` all still build. No remaining route or broken-link
    warning references any of the removed pages.
    
    ## Versions
    
    - [x] dev
    
    ## Languages
    
    - [x] Chinese
    - [x] English
    
    ## Docs Checklist
    
    - [x] Checked by AI
    - [x] Updated required version and language counterparts, or explained
    why not
---
 .github/workflows/build-check.yml          | 326 +++++++++++-----
 docusaurus.config.js                       |  17 +-
 i18n/zh-CN/code.json                       |  68 ----
 src/constant/common.tsx                    |   4 +-
 src/pages/_download/index.scss             | 308 ---------------
 src/pages/_download/index.tsx              | 607 -----------------------------
 src/pages/{vendors => _vendors}/index.tsx  |   4 +
 src/pages/archive-docs/index.scss          |  90 -----
 src/pages/archive-docs/index.tsx           | 165 --------
 src/pages/learning/index.tsx               | 341 ----------------
 src/pages/learning/siteMap.scss            | 104 -----
 static/images/sitemap/sitemap-admin.png    | Bin 1801 -> 0 bytes
 static/images/sitemap/sitemap-book.png     | Bin 1809 -> 0 bytes
 static/images/sitemap/sitemap-export.png   | Bin 2696 -> 0 bytes
 static/images/sitemap/sitemap-model.png    | Bin 1911 -> 0 bytes
 static/images/sitemap/sitemap-question.png | Bin 2035 -> 0 bytes
 static/images/sitemap/sitemap-refresh.png  | Bin 2445 -> 0 bytes
 static/images/sitemap/sitemap-search.png   | Bin 2012 -> 0 bytes
 static/images/sitemap/sitemap-setting.png  | Bin 2298 -> 0 bytes
 static/images/sitemap/sitemap-sql.png      | Bin 2389 -> 0 bytes
 static/images/sitemap/sitemap-start.png    | Bin 2131 -> 0 bytes
 static/images/toc-icon/pdf.svg             |   5 -
 22 files changed, 258 insertions(+), 1781 deletions(-)

diff --git a/.github/workflows/build-check.yml 
b/.github/workflows/build-check.yml
index 592d12d78cf..773158e8d52 100644
--- a/.github/workflows/build-check.yml
+++ b/.github/workflows/build-check.yml
@@ -79,149 +79,291 @@ jobs:
                 echo "=== Changed files ==="
                 echo "$CHANGED_FILES"
 
+                # 
---------------------------------------------------------------
+                # The build scope is three independent questions. Answering 
them
+                # separately is what keeps a website-only PR from paying for a
+                # 4-version x 2-locale build (~1h, and enough memory pressure 
to
+                # kill the runner outright).
+                #
+                #   TIER     how much has to be compiled at all
+                #     skip     nothing that reaches the bundler changed
+                #     build    compile the version set computed below
+                #     full     the *set of versions itself* changed, so every
+                #              active version has to be re-validated
+                #   VERSIONS which doc versions have content changes
+                #   LOCALES  which locales have *content* changes
+                #
+                # Site code (src/**, docusaurus.config.js, deps) deliberately 
does
+                # NOT force `full`: the React/TS/SCSS compile is identical for
+                # every doc version, so one representative version catches 
exactly
+                # the same errors at a quarter of the cost. Only versions.json 
and
+                # config/versions-plugin.js — the files that define which 
versions
+                # exist — earn a full build.
+                #
+                # Unrecognised paths fall through to `build` (minimal, but 
real),
+                # so a new kind of file is never silently skipped.
+                # 
---------------------------------------------------------------
+
                 VERSIONS=""
-                LOCALES="en"
-                NEED_FULL_BUILD="false"
+                LOCALES=""
+                TIER="skip"
+                JSON_TO_VALIDATE=""
+
+                # Representative version for compile-only checks: the latest
+                # released version, i.e. the stable one the navbar defaults to.
+                PROBE_VERSION=$(jq -r '.[0] // "4.x"' versions.json)
+
+                # skip < build < full; never lower an already-raised tier.
+                raise_tier() {
+                    case "$1" in
+                        full)
+                            TIER="full"
+                            ;;
+                        build)
+                            if [ "$TIER" = "skip" ]; then TIER="build"; fi
+                            ;;
+                    esac
+                }
+
+                add_version() {
+                    VERSIONS="$1,$VERSIONS"
+                    raise_tier build
+                }
+
+                add_locale() {
+                    case ",$LOCALES," in
+                        *",$1,"*) ;;
+                        *) LOCALES="${LOCALES:+$LOCALES,}$1" ;;
+                    esac
+                    raise_tier build
+                }
+
+                # Translation JSON only needs a syntax check (see below).
+                validate_json_later() {
+                    JSON_TO_VALIDATE="${JSON_TO_VALIDATE}${1}"$'\n'
+                }
 
-                # Check each changed file and map to doc version
+                # First match wins, so order matters: the most specific paths 
and
+                # the version-defining files come before the broad catch-alls.
                 while IFS= read -r file; do
+                    [ -n "$file" ] || continue
                     case "$file" in
-                        # English Dev source (current/unreleased version)
-                        docs/*)
-                            VERSIONS="current,$VERSIONS"
+                        # ---- Files that define which versions exist 
----------
+                        # These change the version set itself, so every active
+                        # version has to be rebuilt to stay honest.
+                        versions.json|config/versions-plugin.js)
+                            raise_tier full
                             ;;
-                        # Chinese Dev source (current/unreleased version)
-                        i18n/zh-CN/docusaurus-plugin-content-docs/current/*)
-                            VERSIONS="current,$VERSIONS"
-                            LOCALES="en,zh-CN"
+
+                        # ---- English doc content 
-----------------------------
+                        # Dev / unreleased version.
+                        docs/*)
+                            add_locale en
+                            add_version current
                             ;;
-                        # English versioned docs
                         versioned_docs/version-*/*)
                             ver=$(echo "$file" | sed -n 
's|versioned_docs/version-\([^/]*\)/.*|\1|p')
-                            VERSIONS="${ver},$VERSIONS"
+                            add_locale en
+                            add_version "$ver"
+                            ;;
+
+                        # ---- Chinese doc content 
-----------------------------
+                        # Only zh-CN is built: an en page cannot break because 
a
+                        # zh-CN page changed. With a single --locale, 
Docusaurus
+                        # drops the locale path prefix (baseUrl becomes / 
instead
+                        # of /zh-CN/) — the same path `yarn start:zh-CN` takes.
+                        # That only shifts output paths, and onBrokenLinks is
+                        # 'warn', so it cannot manufacture a failure.
+                        i18n/zh-CN/docusaurus-plugin-content-docs/current/*)
+                            add_locale zh-CN
+                            add_version current
                             ;;
-                        # Chinese versioned docs
                         i18n/zh-CN/docusaurus-plugin-content-docs/version-*/*)
                             ver=$(echo "$file" | sed -n 
's|i18n/zh-CN/docusaurus-plugin-content-docs/version-\([^/]*\)/.*|\1|p')
-                            VERSIONS="${ver},$VERSIONS"
-                            LOCALES="en,zh-CN"
-                            ;;
-                        # Per-version label translations (e.g. 
version-4.x.json)
-                        
i18n/zh-CN/docusaurus-plugin-content-docs/version-*.json)
-                            ver=$(echo "$file" | sed -n 
's|i18n/zh-CN/docusaurus-plugin-content-docs/version-\([^.]*\)\.json|\1|p')
-                            VERSIONS="${ver},$VERSIONS"
-                            LOCALES="en,zh-CN"
+                            add_locale zh-CN
+                            add_version "$ver"
                             ;;
-                        # Chinese community docs
-                        
i18n/zh-CN/docusaurus-plugin-content-docs-community/*|i18n/zh-CN/code.json)
-                            LOCALES="en,zh-CN"
+
+                        # ---- Translation tables (JSON) 
-----------------------
+                        # code.json and the per-version label files are lookup
+                        # tables, not content: Docusaurus falls back to the
+                        # source string and warns on a missing/stale key, it 
does
+                        # not fail. The single build-breaking failure mode is
+                        # malformed JSON, which `jq` catches in milliseconds — 
so
+                        # these no longer drag a whole zh-CN site build along.
+                        
i18n/*/code.json|i18n/*/docusaurus-plugin-content-docs*/*.json)
+                            validate_json_later "$file"
                             ;;
-                        # Versioned sidebars: extract version from filename
+
+                        # ---- Version-scoped sidebars 
-------------------------
                         # e.g. versioned_sidebars/version-4.x-sidebars.json → 
4.x
                         versioned_sidebars/version-*-sidebars.json)
                             ver=$(echo "$file" | sed -n 
's|versioned_sidebars/version-\(.*\)-sidebars\.json|\1|p')
-                            VERSIONS="${ver},$VERSIONS"
+                            add_locale en
+                            add_version "$ver"
                             ;;
-                        # Current-version (Dev) sidebar
                         sidebars.ts)
-                            VERSIONS="current,$VERSIONS"
+                            add_locale en
+                            add_version current
+                            ;;
+
+                        # ---- Always-built, version-independent plugins 
-------
+                        # Blog, community, releases and course are separate
+                        # plugin instances that Docusaurus compiles regardless 
of
+                        # DOCS_VERSIONS, so they need a build but no extra
+                        # versions. Their sidebars belong here for the same
+                        # reason — they used to force a full multi-version 
build
+                        # for nothing.
+                        blog/*|community/*|releasenotes/*|course/*)
+                            add_locale en
+                            raise_tier build
+                            ;;
+                        
sidebarsCommunity.json|sidebarsReleases.json|sidebarsCourse.ts)
+                            add_locale en
+                            raise_tier build
+                            ;;
+                        
i18n/zh-CN/docusaurus-plugin-content-docs-community/*|i18n/zh-CN/docusaurus-plugin-content-docs-releases/*)
+                            add_locale zh-CN
+                            raise_tier build
                             ;;
-                        # versions.json controls which versions are built; any 
change
-                        # warrants a full multi-version build.
-                        versions.json)
-                            NEED_FULL_BUILD="true"
+
+                        # ---- Nothing the bundler ever sees 
-------------------
+                        # static/ is copied verbatim into the output. A change
+                        # there cannot fail (or be validated by) a build, so it
+                        # must not widen the scope on its own. A doc that
+                        # references a new asset triggers its own build above.
+                        static/*)
+                            ;;
+                        # CI config, governance tooling, repo-level prose and
+                        # helper scripts. No Python or shell file in this repo 
is
+                        # compiled into the site.
+                        .github/*|.claude/*|.agents/*|.vscode/*|.idea/*)
                             ;;
-                        # Blog and community are independent plugins, not
-                        # controlled by DOCS_VERSIONS. They are always built
-                        # regardless of version filtering.
-                        blog/*|community/*|releasenotes/*)
-                            NEED_BUILD="true"
+                        scripts/docs-governance/*|website-quality-governance/*)
                             ;;
-                        # Releases i18n docs
-                        i18n/zh-CN/docusaurus-plugin-content-docs-releases/*)
-                            LOCALES="en,zh-CN"
+                        *.py|*.sh)
                             ;;
-                        # Static image assets are copied verbatim to the
-                        # build output and don't affect page rendering, so
-                        # they should NOT trigger a full rebuild on their
-                        # own. Any doc change that references these images
-                        # will trigger its own version-scoped build above.
-                        static/images/*|static/images/**)
+                        
README.md|AGENTS.md|TOC.md|LICENSE|NOTICE|store_format_v3.md|cspell.json|author.yml|buildVersions.json|.gitignore|.prettierrc|.prettierignore|.eslintrc|.eslintrc.js)
                             ;;
-                        # Config, source code, or other structural changes
-                        # require a full build to validate
-                        
sidebarsCommunity.json|sidebarsReleases.json|docusaurus.config.js|src/*|static/*|config/*|package.json|yarn.lock|tailwind.config.js)
-                            NEED_FULL_BUILD="true"
+
+                        # ---- Site code, config and deps 
----------------------
+                        # Compiled once and shared by every version and locale,
+                        # so the representative version is a complete check.
+                        # scripts/ entries listed here are genuine build 
inputs:
+                        # key-features/ and last-update/ are read by
+                        # docusaurus.config.js, patch-search-tokenize.js runs 
on
+                        # postinstall.
+                        
src/*|config/*|docusaurus.config.js|package.json|yarn.lock|tailwind.config.js|tsconfig.json|scripts/key-features/*|scripts/last-update/*|scripts/patch-search-tokenize.js)
+                            add_locale en
+                            raise_tier build
+                            ;;
+
+                        # ---- Anything else: fail safe 
------------------------
+                        *)
+                            echo "Unclassified path '$file' — falling back to 
a minimal build."
+                            add_locale en
+                            raise_tier build
                             ;;
                     esac
                 done <<< "$CHANGED_FILES"
 
-                # Build the set of versions Docusaurus actually builds:
-                # `current` (the dev/unreleased version) plus everything in 
versions.json.
-                # Older version dirs (e.g. version-1.2, version-2.0) may still 
exist on
-                # disk but be absent from versions.json — touching them must 
not poison
-                # onlyIncludeVersions, which would fail the build with 
"unknown versions".
+                # Syntax-check the translation tables we chose not to build.
+                if [ -n "$JSON_TO_VALIDATE" ]; then
+                    echo ""
+                    echo "=== Validating changed i18n JSON ==="
+                    while IFS= read -r f; do
+                        [ -n "$f" ] || continue
+                        # Deleted in this PR — nothing left to parse.
+                        [ -f "$f" ] || { echo "  skip (deleted)  $f"; 
continue; }
+                        if jq empty "$f" >/dev/null 2>&1; then
+                            echo "  ok              $f"
+                        else
+                            echo "  INVALID JSON    $f"
+                            jq empty "$f" || true
+                            exit 1
+                        fi
+                    done <<< "$JSON_TO_VALIDATE"
+                fi
+
+                # The versions Docusaurus can actually build: `current` (dev)
+                # plus everything in versions.json. Older dirs (version-1.2,
+                # version-2.0) may still sit on disk while being absent from
+                # versions.json — feeding those to onlyIncludeVersions fails 
the
+                # build with "unknown versions".
                 ACTIVE_VERSIONS=$(jq -r '.[]' versions.json | tr '\n' ',' | 
sed 's/,$//')
                 ACTIVE_VERSIONS="current,${ACTIVE_VERSIONS}"
+                echo ""
                 echo "Active versions (current + versions.json): 
$ACTIVE_VERSIONS"
 
-                # Deduplicate versions
-                if [ "$NEED_FULL_BUILD" = "true" ]; then
-                    # Structural changes: build all active versions
-                    DOCS_VERSIONS=""
-                    echo "Structural changes detected, will build ALL 
versions."
-                elif [ -n "$VERSIONS" ]; then
-                    # Only doc content changes: build only affected versions.
-                    # Intersect detected versions with the active set so that 
edits to
-                    # retired version dirs (e.g. version-1.2) don't break the 
build.
-                    RAW_VERSIONS=$(echo "$VERSIONS" | tr ',' '\n' | sort -u | 
grep -v '^$')
+                SKIP_BUILD="false"
+                NEED_FULL_BUILD="false"
+                DOCS_VERSIONS=""
+
+                if [ "$TIER" = "skip" ]; then
+                    SKIP_BUILD="true"
+                    LOCALES="en"
+                    # An empty DOCS_VERSIONS means "every version" to
+                    # docusaurus.config.js. Nothing should read it while
+                    # skip_build is set, but pin it to the probe version 
anyway so
+                    # a future edit can't turn a skipped build into the most
+                    # expensive one.
+                    DOCS_VERSIONS="$PROBE_VERSION"
+                    echo "Nothing that reaches the bundler changed — skipping 
the site build."
+                elif [ "$TIER" = "full" ]; then
+                    NEED_FULL_BUILD="true"
                     DOCS_VERSIONS=""
-                    SKIPPED_VERSIONS=""
+                    echo "The version set itself changed — building ALL active 
versions."
+                else
+                    RAW_VERSIONS=$(echo "$VERSIONS" | tr ',' '\n' | sort -u | 
grep -v '^$' || true)
+                    KEPT=""
+                    DROPPED=""
                     for v in $RAW_VERSIONS; do
                         if echo ",$ACTIVE_VERSIONS," | grep -q ",$v,"; then
-                            DOCS_VERSIONS="${v},$DOCS_VERSIONS"
+                            KEPT="${v},$KEPT"
                         else
-                            SKIPPED_VERSIONS="${v},$SKIPPED_VERSIONS"
+                            DROPPED="${v},$DROPPED"
                         fi
                     done
-                    DOCS_VERSIONS=$(echo "$DOCS_VERSIONS" | sed 's/,$//')
-                    SKIPPED_VERSIONS=$(echo "$SKIPPED_VERSIONS" | sed 's/,$//')
-                    if [ -n "$SKIPPED_VERSIONS" ]; then
-                        echo "Ignoring changes to retired/unknown versions: 
$SKIPPED_VERSIONS"
+                    DOCS_VERSIONS=$(echo "$KEPT" | sed 's/,$//')
+                    DROPPED=$(echo "$DROPPED" | sed 's/,$//')
+                    if [ -n "$DROPPED" ]; then
+                        echo "Ignoring changes to retired/unknown versions: 
$DROPPED"
                     fi
                     if [ -z "$DOCS_VERSIONS" ]; then
-                        # Everything we detected was retired/unknown; fall 
back to a
-                        # minimal build so the workflow still validates the 
site.
-                        DOCS_VERSIONS="4.x"
-                        echo "All detected versions were retired/unknown, 
doing minimal build with '4.x' only."
+                        # Either no versioned content changed (site code, blog,
+                        # community, course...) or everything we found was
+                        # retired. One representative version is enough.
+                        DOCS_VERSIONS="$PROBE_VERSION"
+                        echo "No active versioned content changed — probing 
with '$PROBE_VERSION' only."
                     else
-                        echo "Doc-only changes detected for versions: 
$DOCS_VERSIONS"
+                        echo "Versioned content changed for: $DOCS_VERSIONS"
                     fi
-                else
-                    # No versioned doc changes (e.g., only blog, community, or 
scripts).
-                    # Blog and community plugins are always compiled by 
Docusaurus
-                    # regardless of DOCS_VERSIONS, so we just set the minimal 
docs
-                    # scope to keep the build fast.
-                    DOCS_VERSIONS="4.x"
-                    echo "No doc version changes detected, doing minimal build 
with '4.x' only."
-                    echo "(Blog and community plugins are always built 
regardless.)"
                 fi
 
-                # Determine locales for the build command
+                # Default the locale when a build is needed but no 
locale-specific
+                # content changed (site code, deps, blog, ...).
+                if [ "$SKIP_BUILD" != "true" ] && [ -z "$LOCALES" ]; then
+                    LOCALES="en"
+                fi
+
                 LOCALE_ARGS=""
                 IFS=',' read -ra LOCALE_ARR <<< "$LOCALES"
                 for locale in "${LOCALE_ARR[@]}"; do
+                    [ -n "$locale" ] || continue
                     LOCALE_ARGS="$LOCALE_ARGS --locale $locale"
                 done
 
                 echo "docs_versions=$DOCS_VERSIONS" >> "$GITHUB_OUTPUT"
                 echo "locale_args=$LOCALE_ARGS" >> "$GITHUB_OUTPUT"
                 echo "need_full_build=$NEED_FULL_BUILD" >> "$GITHUB_OUTPUT"
+                echo "skip_build=$SKIP_BUILD" >> "$GITHUB_OUTPUT"
 
                 echo ""
                 echo "=== Build plan ==="
-                echo "  DOCS_VERSIONS:  ${DOCS_VERSIONS:-all}"
-                echo "  LOCALE_ARGS:    $LOCALE_ARGS"
+                echo "  TIER:            $TIER"
+                echo "  SKIP_BUILD:      $SKIP_BUILD"
+                echo "  DOCS_VERSIONS:   ${DOCS_VERSIONS:-all}"
+                echo "  LOCALE_ARGS:    ${LOCALE_ARGS:- (none)}"
                 echo "  NEED_FULL_BUILD: $NEED_FULL_BUILD"
 
             - name: Build
@@ -234,6 +376,14 @@ jobs:
                   yarn
                   yarn key-features:generate
 
+                  # Dependencies are installed unconditionally above because 
the
+                  # governance steps below need node_modules; only the site 
build
+                  # itself is scoped by the detect step.
+                  if [ "${{ steps.detect.outputs.skip_build }}" = "true" ]; 
then
+                      echo "No site-affecting changes detected — skipping the 
docusaurus build."
+                      exit 0
+                  fi
+
                   echo "Building with DOCS_VERSIONS=${DOCS_VERSIONS:-all}"
                   PWA_SERVICE_WORKER_URL=https://doris.apache.org/sw.js yarn 
docusaurus build ${{ steps.detect.outputs.locale_args }}
                   rm -rf build
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 11df557dc77..37208cafaaa 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -100,6 +100,17 @@ function buildRedirectIndex() {
     add('/download', '/download-next');
     add('/zh-CN/download', '/zh-CN/download-next');
 
+    // The hand-curated /learning sitemap page was retired; Doris 101 is now
+    // the structured entry point for newcomers.
+    add('/course', '/learning');
+    add('/zh-CN/course', '/zh-CN/learning');
+
+    // /vendors lost its navigation entry in the new-homepage refactor and has
+    // no obvious successor page, so it lands on the homepage. Its source is
+    // parked at src/pages/_vendors (underscore = not routed).
+    add('/', '/vendors');
+    add('/zh-CN', '/zh-CN/vendors');
+
     // /ecosystem/* was retired; its closest spiritual home is the Dev tree's
     // Data Integration intro, which catalogs the same connector/tool families
     // the old /ecosystem/ pages did.
@@ -364,8 +375,10 @@ const config = {
 
                     // Static redirects indexed by target. Trim trailing slash
                     // for the lookup since Docusaurus' trailingSlash:true
-                    // gives us paths like /docs/4.x/foo/.
-                    const normalized = existingPath.replace(/\/$/, '');
+                    // gives us paths like /docs/4.x/foo/. The locale root
+                    // ('/' or '/zh-CN/') is the one path whose slash is the
+                    // whole path, so keep it as-is.
+                    const normalized = existingPath === '/' ? '/' : 
existingPath.replace(/\/$/, '');
                     if (REDIRECT_INDEX[normalized]) {
                         redirects.push(...REDIRECT_INDEX[normalized]);
                     }
diff --git a/i18n/zh-CN/code.json b/i18n/zh-CN/code.json
index ab98f26312f..ca68b95015e 100644
--- a/i18n/zh-CN/code.json
+++ b/i18n/zh-CN/code.json
@@ -1,72 +1,4 @@
 {
-    "archive.layout.title": {
-        "message": "Apache Doris - 归档文档中心",
-        "description": "Apache Doris - Archive Document Center"
-    },
-    "archive.layout.description": {
-        "message": "收录Apache doris归档文档",
-        "description": "Collection of Apache doris archive documents"
-    },
-    "archive.page.title": {
-        "message": "归档文档中心",
-        "description": "The label for archived docs page title"
-    },
-    "archive.admonition.1": {
-        "message": "此为 Apache Doris 归档文档,已归档文档不再提供任何更新。",
-        "description": "The label for admonition in archived docs page"
-    },
-    "archive.admonition.2": {
-        "message": "建议使用",
-        "description": "The label for admonition in archived docs page"
-    },
-    "archive.page.2": {
-        "message": "建议使用 {stableLink}或{latestLink}。",
-        "description": "The label for admonition in archived docs page"
-    },
-    "archive.admonition.stable": {
-        "message": "版本(2.1)",
-        "description": "stable version"
-    },
-    "archive.admonition.latest": {
-        "message": "版本(3.x)",
-        "description": "latest version"
-    },
-    "archive.admonition.and": {
-        "message": "或",
-        "description": "and"
-    },
-    "archive.page.version": {
-        "message": "版本:1.2",
-        "description": "Archive Version"
-    },
-    "archive.preview.v12": {
-        "message": "归档文档链接:{previewLink}",
-        "description": "Archive preview link"
-    },
-    "archive.preview.link": {
-        "message": "Apache Doris v1.2 中文文档",
-        "description": "Archive preview link"
-    },
-    "archive.preview.date": {
-        "message": "归档日期:{date}",
-        "description": "Archive date"
-    },
-    "archive-tips-1": {
-        "message": "本页将归档 Apache Doris 暂停维护版本的所有文档,并提供 PDF 格式供用户下载。",
-        "description": "Archive tips"
-    },
-    "archive-tips-2": {
-        "message": "请注意,归档文档将不再进行任何更新,建议用户使用{latestVersion}。",
-        "description": "Archive tips"
-    },
-    "archive-download-text": {
-        "message": "下载 PDF",
-        "description": "archive download text"
-    },
-    "archive.latest.version": {
-        "message": "最新版本",
-        "description": "archive latest version"
-    },
     "theme.docs.versions.latestVersionSuggestionLabel": {
         "message": "使用参考请跳转至 {v4xLink}/{v3xLink}/{v21Link} 正式版本文档进行查阅。"
     },
diff --git a/src/constant/common.tsx b/src/constant/common.tsx
index 2c5673b37bc..3f16c270e2c 100644
--- a/src/constant/common.tsx
+++ b/src/constant/common.tsx
@@ -17,6 +17,4 @@ export const BLOG_TAG_ICONS = {
     'Release Notes': <ReleaseNoteIcon />,
     'Top News': <TopNewsIcon />,
     All: <AllBlogIcon />,
-};
-
-export const ARCHIVE_PATH = 'archive-docs';
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/src/pages/_download/index.scss b/src/pages/_download/index.scss
deleted file mode 100644
index 85d3b8eb704..00000000000
--- a/src/pages/_download/index.scss
+++ /dev/null
@@ -1,308 +0,0 @@
-.download {
-    margin: 3rem 0;
-
-    a {
-        transition: all 0.3s;
-
-        &:hover {
-            text-decoration: underline;
-        }
-    }
-
-    .page-column {
-        padding: 1.875rem 0;
-    }
-
-    .maven {
-        .page-column-title {
-            font-size: 1.5rem;
-        }
-    }
-    .downlaod-document {
-        color: var(--ifm-color-primary);
-        cursor: pointer;
-        padding-left: 0.4rem;
-        display: flex;
-        align-items: center;
-    }
-
-    &-box {
-        padding: 3.125rem;
-        box-shadow: 10px 12px 38px rgba(33, 39, 116, 0.07);
-        border-radius: 4px;
-        background-color: var(--global-colors-white);
-
-        .download-type {
-            display: flex;
-            align-items: center;
-
-            & + .download-type {
-                margin-top: 1rem;
-            }
-
-            &.way {
-                align-items: start;
-            }
-
-            label {
-                font-size: var(--global-font-size-default);
-                font-weight: 600;
-                color: var(--global-colors-text-primary);
-                margin-right: 2.125rem;
-                flex-shrink: 0;
-                width: 9.0625rem;
-            }
-
-            .tabs-radio {
-                flex: 1;
-                display: flex;
-                align-items: center;
-                border-radius: 2px;
-
-                .radio {
-                    border: var(--ifm-color-primary) solid 1px;
-                    flex: 1;
-                    text-align: center;
-                    font-size: var(--global-font-size-medium);
-                    color: var(--global-colors-text-primary);
-                    min-height: 3.125rem;
-                    display: flex;
-                    flex-direction: column;
-                    align-items: center;
-                    justify-content: center;
-                    cursor: pointer;
-
-                    &.disabled {
-                        background-color: var(--global-colors-background);
-                        cursor: not-allowed;
-                        border-color: var(--global-colors-split);
-                        color: var(--global-colors-text);
-                    }
-
-                    &.checked {
-                        background-color: var(--ifm-color-primary);
-                        color: var(--global-colors-white);
-                    }
-
-                    & + .radio {
-                        margin-left: -1px;
-                    }
-                    & + .disabled {
-                        border-left: none;
-                        margin-left: 0;
-                    }
-
-                    .inner {
-                        margin: 0.3125rem;
-                        background-color: #f7faff;
-                        width: calc(100% - 0.625rem);
-                        color: var(--ifm-color-primary);
-
-                        & + .inner {
-                            margin-top: 0;
-                        }
-                    }
-                }
-            }
-        }
-        .download-way {
-            display: none;
-            &.show {
-                display: block;
-                width: 100%;
-            }
-            &.all-in-one {
-                .theme-code-block {
-                    font-size: 0.875rem ;
-                    padding-left: 2rem;
-                    position: relative;
-                    &:before {
-                        content: '$';
-                        position: absolute;
-                        left: 1rem;
-                        top: 50%;
-                        transform: translateY(-50%);
-                        font-size: 1rem;
-                    }
-                }
-            }
-        }
-
-        .tips {
-            margin-top: 1rem;
-            .title {
-                color: #556986;
-                font-weight: 600;
-                font-size: var(--global-font-size-smaller);
-            }
-            .notice-text {
-                font-size: var(--global-font-size-smaller);
-                font-weight: 600;
-                color: #556986;
-                a {
-                    margin: 0 0.3125rem;
-                }
-            }
-            .notice-dir {
-                display: flex;
-                // margin-bottom: 0.5rem;
-                .notice-dir-name {
-                    min-width: 10rem;
-                    padding-left: 3.5rem;
-                    &.md {
-                        position: relative;
-                        &:before {
-                            position: absolute;
-                            left: 0.8rem;
-                            content: '';
-                            width: 0;
-                            height: 100%;
-                            border-left: 1.5px solid #556986;
-                        }
-                        &:after {
-                            position: absolute;
-                            left: 0.8rem;
-                            top: 50%;
-                            content: '';
-                            width: 2rem;
-                            height: 0;
-                            border-top: 1.5px solid #556986;
-                        }
-                    }
-                    &.end {
-                        position: relative;
-                        &:before {
-                            position: absolute;
-                            left: 0.8rem;
-                            content: '';
-                            width: 0;
-                            height: 50%;
-                            border-left: 1.5px solid #556986;
-                        }
-                        &:after {
-                            position: absolute;
-                            left: 0.8rem;
-                            top: 50%;
-                            content: '';
-                            width: 2rem;
-                            height: 0;
-                            border-top: 1.5px solid #556986;
-                        }
-                    }
-                }
-                .notice-dir-val {
-                    margin-left: 1rem;
-                }
-            }
-            ul {
-                margin: 0;
-                padding: 0;
-                padding-left: 0.9375rem;
-                li {
-                    color: #556986;
-                    font-size: var(--global-font-size-smaller);
-                    line-height: 1.5;
-                    font-weight: 600;
-                    margin-top: 0.3125rem;
-
-                    code {
-                        border-radius: 0.125rem;
-                        border-width: 1px;
-                        padding: 0.125rem 0.3125rem;
-                        margin: 0 0.3125rem;
-                    }
-                    a {
-                        margin: 0 0.3125rem;
-                    }
-                }
-            }
-        }
-    }
-
-    @media screen and (max-width: 996px) {
-        &-box {
-            padding: 0;
-            box-shadow: none;
-
-            .download-type {
-                flex-direction: column;
-                align-items: flex-start;
-
-                label {
-                    width: 100%;
-                }
-
-                .tabs-radio {
-                    width: 100%;
-                }
-            }
-
-            .intr {
-                margin-left: 0;
-            }
-
-            .tips {
-                margin-left: 0;
-            }
-        }
-    }
-
-    .table-content {
-        .content {
-            overflow: auto;
-        }
-
-        table {
-            width: 100%;
-            display: table;
-            margin-bottom: 0;
-
-            thead {
-                tr {
-                    background-color: #f7faff;
-                    border-bottom: none;
-                    border-top: none;
-
-                    th {
-                        font-size: var(--global-font-size-default);
-                        color: var(--global-colors-text-primary);
-                        font-weight: 700;
-                        border-color: #dbe4f3;
-                        line-height: 1.9;
-                        white-space: nowrap;
-                    }
-                }
-            }
-
-            tbody {
-                tr {
-                    td {
-                        border-color: #dbe4f3;
-                        font-size: var(--global-font-size-medium);
-                        white-space: nowrap;
-
-                        a + a {
-                            margin-left: 1.25rem;
-                        }
-                    }
-                }
-            }
-        }
-
-        .more {
-            margin-top: 2.5rem;
-
-            @media screen and (max-width: 996px) {
-                margin-top: 1.5rem;
-            }
-        }
-    }
-
-    .verify {
-        font-size: var(--global-font-size-smaller);
-
-        .page-column {
-            line-height: 1.8;
-        }
-    }
-}
diff --git a/src/pages/_download/index.tsx b/src/pages/_download/index.tsx
deleted file mode 100644
index 26a4a5b6938..00000000000
--- a/src/pages/_download/index.tsx
+++ /dev/null
@@ -1,607 +0,0 @@
-import clsx from 'clsx';
-import CodeBlock from '@theme/CodeBlock';
-import Layout from '../../theme/Layout';
-import Link from '@docusaurus/Link';
-import More from '@site/src/components/More';
-import PageColumn from '@site/src/components/PageColumn';
-import React, { useEffect, useState } from 'react';
-import Translate, { translate } from '@docusaurus/Translate';
-import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-import './index.scss';
-import {
-    CPUEnum,
-    DownloadLinkProps,
-    JDKEnum,
-    VersionEnum,
-    getAllDownloadLinks,
-    getAllFlinkConnectorDownloadLinks,
-    getAllSparkConnectorDownloadLinks,
-    getAllRelease,
-} from '@site/src/constant/download.data';
-import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
-
-const BINARY_VERSION = [
-    { label: `${VersionEnum.Latest} ( Latest )`, value: VersionEnum.Latest },
-    { label: `${VersionEnum.Prev}`, value: VersionEnum.Prev },
-    { label: `${VersionEnum.Earlier} ( Stable )`, value: VersionEnum.Earlier },
-];
-
-const JDK = [
-    { label: 'JDK 8', value: JDKEnum.JDK8 },
-    { label: 'JDK 11', value: JDKEnum.JDK11 },
-];
-
-export default function Download(): JSX.Element {
-    const {
-        siteConfig,
-        i18n: { currentLocale, locales, localeConfigs },
-    } = useDocusaurusContext();
-    const dataLocale = currentLocale === 'zh-CN' ? 'zh-CN' : 'en';
-
-    const [version, setVersion] = useState<string>(VersionEnum.Latest);
-    const [cpus, setCpus] = useState<any[]>([]);
-    const [cpu, setCPU] = useState<string>(CPUEnum.IntelAvx2);
-    const [jdk, setJDK] = useState<string>(JDKEnum.JDK8);
-    const [current, setCurrent] = useState<DownloadLinkProps>();
-    const [downloadWay, setDownloadWay] = useState<string>('all-in-one');
-
-    const FLINK_CONNECTOR = getAllFlinkConnectorDownloadLinks(dataLocale);
-    const SPARK_CONNECTOR = getAllSparkConnectorDownloadLinks(dataLocale);
-    const ALL_RELEASE = getAllRelease(dataLocale);
-    let ALL_RELEASE_VERSION = {};
-    ALL_RELEASE.forEach(item => {
-        const info: any = Array.isArray(item.download) ? 
item.download.find(item => item.cpu === 'X64 ( avx2 )') : {};
-        ALL_RELEASE_VERSION[item.version] = {
-            cpu: CPUEnum.IntelAvx2,
-            binary: info.binary,
-            source: info.source,
-        };
-    });
-    const [releaseUrls, setReleaseUrls] = useState(ALL_RELEASE_VERSION);
-
-    const changeVersion = (val: string) => {
-        setVersion(val);
-    };
-    const changeCPU = (val: string) => {
-        setCPU(val);
-    };
-    const changeJDK = (val: string) => {
-        // if (version === VersionEnum.Latest && val !== JDKEnum.JDK8) return;
-        if (val !== JDKEnum.JDK8) return;
-        setJDK(val);
-    };
-
-    const getDownloadLinks = () => {
-        const text = `${version}-${cpu}-${jdk}`;
-        const linkObj = getAllDownloadLinks(dataLocale).find(item => item.id 
=== text);
-        setCurrent(linkObj);
-        if (linkObj && !linkObj.sh) {
-            setDownloadWay('download');
-        }
-    };
-
-    function downloadFile(url: string) {
-        const a = document.createElement('a');
-        a.download = url;
-        a.href = url;
-        a.target = '_blank';
-        const clickEvt = new MouseEvent('click', {
-            view: window,
-            bubbles: true,
-            cancelable: true,
-        });
-        a.dispatchEvent(clickEvt);
-        a.remove();
-    }
-
-    const downloadDocument = () => {
-        const url =
-            currentLocale === 'zh-CN'
-                ? 'https://doris.apache.org/assets/files/Apache Doris Docs 
(中文).pdf'
-                : 'https://doris.apache.org/assets/files/Apache Doris Docs 
(English).pdf';
-        downloadFile(url);
-    };
-
-    const CPU = [
-        { label: 'X64 ( avx2 )', value: CPUEnum.IntelAvx2 },
-        { label: 'X64 ( no avx2 )', value: CPUEnum.IntelNoAvx2 },
-        { label: 'ARM64', value: CPUEnum.ARM },
-    ];
-
-    const getCpus = version => {
-        const currentCpus = [];
-        getAllDownloadLinks(dataLocale).forEach(item => {
-            if (item.id.includes(version)) {
-                const matchCpu = CPU.find(cpu => item.id.includes(cpu.value));
-                currentCpus.push(matchCpu);
-            }
-        });
-        return currentCpus;
-    };
-
-    useEffect(() => {
-        getDownloadLinks();
-    }, [version, cpu, jdk]);
-
-    useEffect(() => {
-        const currentCpus = getCpus(version);
-        setCpus(currentCpus);
-        setCPU(CPUEnum.X64);
-        setJDK(JDKEnum.JDK8);
-    }, [version]);
-
-    function handleCPUChange(cpu: any, currentVersionInfo: any) {
-        const info = currentVersionInfo.download.find(item => item.cpu === 
cpu);
-        setReleaseUrls({
-            ...releaseUrls,
-            [currentVersionInfo.version]: {
-                binary: info.binary,
-                source: info.source,
-            },
-        });
-    }
-
-    return (
-        <Layout
-            title={translate({ id: 'download.title', message: 'Download' })}
-            description={translate({
-                id: 'homepage.banner.subTitle',
-                message: 'An easy-to-use, high-performance and unified 
analytical database',
-            })}
-            wrapperClassName="download"
-        >
-            <section className="quick-download">
-                <PageColumn
-                    align="left"
-                    title={
-                        <Translate id="download.quick.download" 
description="Quick Download">
-                            Quick Download
-                        </Translate>
-                    }
-                >
-                    <div className="download-box">
-                        <div className="download-type">
-                            <label>
-                                <Translate id="download.version" 
description="Binary Version">
-                                    Version
-                                </Translate>
-                            </label>
-                            <div className="tabs-radio">
-                                {BINARY_VERSION.map(item => (
-                                    <div
-                                        className={clsx('radio', {
-                                            checked: version === item.value,
-                                        })}
-                                        key={item.value}
-                                        onClick={() => 
changeVersion(item.value)}
-                                    >
-                                        {item.label}
-                                    </div>
-                                ))}
-                            </div>
-                        </div>
-                        <div className="download-type">
-                            <label>
-                                <Translate id="download.cpu.model" 
description="CPU Model">
-                                    CPU Model
-                                </Translate>
-                            </label>
-                            <div className="tabs-radio">
-                                {cpus.map(item => (
-                                    <div
-                                        className={clsx('radio', {
-                                            checked: cpu === item.value,
-                                        })}
-                                        key={item.value}
-                                        onClick={() => changeCPU(item.value)}
-                                    >
-                                        {item.label}
-                                    </div>
-                                ))}
-                            </div>
-                        </div>
-                        {/* <div className="download-type">
-                            <label>
-                                <Translate id="download.jdk.version" 
description="JDK Version">
-                                    JDK Version
-                                </Translate>
-                            </label>
-                            <div className="tabs-radio">
-                                {JDK.map(item => (
-                                    <div
-                                        className={clsx('radio', {
-                                            checked: jdk === item.value,
-                                            // disabled: version === 
VersionEnum.Latest && item.value !== JDKEnum.JDK8,
-                                            disabled: item.value !== 
JDKEnum.JDK8,
-                                        })}
-                                        key={item.value}
-                                        onClick={() => changeJDK(item.value)}
-                                    >
-                                        {item.label}
-                                    </div>
-                                ))}
-                            </div>
-                        </div> */}
-                        {current && current?.sh && (
-                            <div className="download-type">
-                                <label>
-                                    <Translate id="download.download.link" 
description="Download">
-                                        Download
-                                    </Translate>
-                                </label>
-                                <div className="tabs-radio">
-                                    <div
-                                        onClick={() => 
setDownloadWay('all-in-one')}
-                                        className={clsx('radio', {
-                                            checked: downloadWay === 
'all-in-one',
-                                        })}
-                                    >
-                                        <span>Binary</span>
-                                    </div>
-
-                                    <div
-                                        onClick={() => 
setDownloadWay('download')}
-                                        className={clsx('radio', {
-                                            checked: downloadWay === 
'download',
-                                        })}
-                                    >
-                                        <span>Source</span>
-                                    </div>
-                                </div>
-                            </div>
-                        )}
-
-                        <div className="download-type way">
-                            <label>
-                                {!current?.sh && (
-                                    <Translate id="download.download.link" 
description="Download">
-                                        Download
-                                    </Translate>
-                                )}
-                            </label>
-                            <div
-                                className={clsx('download-way all-in-one', {
-                                    show: downloadWay === 'all-in-one',
-                                })}
-                            >
-                                {current && current.sh && (
-                                    <div className="tabs-radio">
-                                        <div className="radio">
-                                            <div className="inner" 
key={current.sh?.label}>
-                                                <Link 
to={current.sh?.links.source}>{current.sh?.label}</Link>
-                                                <span> ( </span>
-                                                <Link 
to={current.sh?.links.signature}>asc</Link>,{' '}
-                                                <Link 
to={current.sh?.links.sha512}>sha512</Link>
-                                                <span> )</span>
-                                            </div>
-                                        </div>
-                                    </div>
-                                )}
-                                {version === VersionEnum.Latest && (
-                                    <div className="tips">
-                                        <div className="title">
-                                            <Translate 
id="Notice">Notice:</Translate>
-                                        </div>
-                                        <div className="notice-text">
-                                            For detailed upgrade precautions, 
please refer to the
-                                            <Link 
to="https://github.com/apache/doris/issues/27909";>2.0.3</Link>
-                                            and the
-                                            <Link 
to="/docs/dev/install/standard-deployment">deployment</Link> and
-                                            cluster
-                                            <Link 
to="/docs/dev/admin-manual/cluster-management/upgrade">upgrade</Link>
-                                            manual.
-                                        </div>
-                                    </div>
-                                )}
-                            </div>
-                            <div
-                                className={clsx('download-way', {
-                                    show: downloadWay === 'download',
-                                })}
-                            >
-                                <div className="tabs-radio">
-                                    <div className="radio">
-                                        {current?.items.map(item => (
-                                            <div className="inner" 
key={item.label}>
-                                                <Link 
to={item?.links.source}>{item?.label}</Link>
-                                                <span> ( </span>
-                                                <Link 
to={item?.links.signature}>asc</Link>,{' '}
-                                                <Link 
to={item?.links.sha512}>sha512</Link>
-                                                <span> )</span>
-                                            </div>
-                                        ))}
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </PageColumn>
-            </section>
-            <section className="table-content">
-                <PageColumn
-                    align="left"
-                    title={<Translate id="download.release">All 
Releases</Translate>}
-                    footer={
-                        <More
-                            text={<Translate 
id="download.release.more">More</Translate>}
-                            link="https://archive.apache.org/dist/doris/";
-                        />
-                    }
-                >
-                    <div className="content">
-                        <table>
-                            <thead>
-                                <tr>
-                                    <th>
-                                        <Translate 
id="download.all.release.version">Version</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.all.release.date">Release Date</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate id="download.cpu.model">CPU 
Model</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.all.release.download">Download</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.all.release.note">Release Notes</Translate>
-                                    </th>
-                                </tr>
-                            </thead>
-                            <tbody>
-                                {ALL_RELEASE.map((item, index) => (
-                                    <tr key={index}>
-                                        <td>{item.version}</td>
-                                        <td>{item.date}</td>
-                                        <td>
-                                            {/* <DropdownNavbarItem 
items={item.download} />, */}
-
-                                            {Array.isArray(item.download) ? (
-                                                <select
-                                                    style={{ height: 30 }}
-                                                    onChange={e => 
handleCPUChange(e.target.value, item)}
-                                                >
-                                                    {item.download.map(item => 
(
-                                                        <option key={item.cpu} 
value={item.cpu}>
-                                                            {item.cpu}
-                                                        </option>
-                                                    ))}
-                                                </select>
-                                            ) : (
-                                                <></>
-                                            )}
-                                        </td>
-                                        <td>
-                                            {Array.isArray(item.download) ? (
-                                                <div>
-                                                    <Link 
to={releaseUrls[item.version].source}>
-                                                        <Translate 
id="download.source">Source</Translate>
-                                                    </Link>
-                                                    <span style={{ padding: '0 
0.28rem' }}>/</span>
-                                                    <Link 
to={releaseUrls[item.version].binary}>
-                                                        <Translate 
id="download.all.binary">Binary</Translate>
-                                                    </Link>
-                                                </div>
-                                            ) : (
-                                                <Link to={item.download}>
-                                                    <Translate 
id="download.source.binary">Source / Binary</Translate>
-                                                </Link>
-                                            )}
-                                        </td>
-                                        <td>
-                                            <Link to={item.note}>Release 
Notes</Link>
-                                        </td>
-                                    </tr>
-                                ))}
-                            </tbody>
-                        </table>
-                    </div>
-                </PageColumn>
-            </section>
-            <section className="table-content">
-                <PageColumn
-                    align="left"
-                    title={
-                        <Translate id="download.flink.connector" 
description="Flink Doris Connector">
-                            Flink Doris Connector
-                        </Translate>
-                    }
-                >
-                    <div className="content">
-                        <table>
-                            <thead>
-                                <tr>
-                                    <th>
-                                        <Translate 
id="download.flink.connector.version">Version</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.flink.release.date">Release Date</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.flink.version">Flink Version</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.flink.scala.version">Scala Version</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.flink.doris.version">Doris Version</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.source">Source</Translate>
-                                    </th>
-                                </tr>
-                            </thead>
-                            <tbody>
-                                {FLINK_CONNECTOR.map((item, index) => (
-                                    <tr key={index}>
-                                        <td>{item.version}</td>
-                                        <td>{item.date}</td>
-                                        <td>{item.flink}</td>
-                                        <td>{item.scala}</td>
-                                        <td>{item.doris}</td>
-                                        <td>
-                                            <Link to={item.download}>
-                                                <Translate 
id="download">Download</Translate>
-                                            </Link>
-                                            <Link 
to={item.github}>GitHub</Link>
-                                        </td>
-                                    </tr>
-                                ))}
-                            </tbody>
-                        </table>
-                    </div>
-                </PageColumn>
-            </section>
-            <section className="maven">
-                <PageColumn
-                    align="left"
-                    title={
-                        <Translate id="download.maven" description="Maven">
-                            Maven
-                        </Translate>
-                    }
-                >
-                    <CodeBlock language="xml" title="" showLineNumbers>
-                        {`<dependency>
-  <groupId>org.apache.doris</groupId>
-  <artifactId>flink-doris-connector-1.14_2.12</artifactId>
-  <!--artifactId>flink-doris-connector-1.13_2.12</artifactId-->
-  <!--artifactId>flink-doris-connector-1.12_2.12</artifactId-->
-  <!--artifactId>flink-doris-connector-1.11_2.12</artifactId-->
-  <!--version>1.0.3</version-->
-  <version>1.1.0</version>
-</dependency>`}
-                    </CodeBlock>
-                </PageColumn>
-            </section>
-            <section className="table-content">
-                <PageColumn
-                    align="left"
-                    title={
-                        <Translate id="download.spark.connector" 
description="Spark Doris Connector">
-                            Spark Doris Connector
-                        </Translate>
-                    }
-                >
-                    <div className="content">
-                        <table>
-                            <thead>
-                                <tr>
-                                    <th>
-                                        <Translate 
id="download.spark.connector.version">Version</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.spark.release.date">Release Date</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.spark.version">Spark Version</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.spark.scala.version">Scala Version</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.spark.doris.version">Doris Version</Translate>
-                                    </th>
-                                    <th>
-                                        <Translate 
id="download.source">Source</Translate>
-                                    </th>
-                                </tr>
-                            </thead>
-                            <tbody>
-                                {SPARK_CONNECTOR.map((item, index) => (
-                                    <tr key={index}>
-                                        <td>{item.version}</td>
-                                        <td>{item.date}</td>
-                                        <td>{item.spark}</td>
-                                        <td>{item.scala}</td>
-                                        <td>{item.doris}</td>
-                                        <td>
-                                            <Link to={item.download}>
-                                                <Translate 
id="download">Download</Translate>
-                                            </Link>
-                                            <Link 
to={item.github}>GitHub</Link>
-                                        </td>
-                                    </tr>
-                                ))}
-                            </tbody>
-                        </table>
-                    </div>
-                </PageColumn>
-            </section>
-            <section className="maven">
-                <PageColumn
-                    align="left"
-                    title={
-                        <Translate id="download.maven" description="Maven">
-                            Maven
-                        </Translate>
-                    }
-                >
-                    <CodeBlock language="xml" title="" showLineNumbers>
-                        {`<dependency>
-  <groupId>org.apache.doris</groupId>
-  <artifactId>spark-doris-connector-3.2_2.12</artifactId>
-  <!--artifactId>spark-doris-connector-3.1_2.12</artifactId-->
-  <!--artifactId>spark-doris-connector-2.3_2.11</artifactId-->
-  <!--version>1.0.1</version-->
-  <version>1.1.0</version>
-</dependency>`}
-                    </CodeBlock>
-                </PageColumn>
-            </section>
-            {/* <section className="table-content">
-                <PageColumn
-                    align="left"
-                    title={
-                        <Translate id="download.document" description="文档">
-                            Document
-                        </Translate>
-                    }
-                >
-                    <div className="content">
-                        <p style={{ display: 'flex', alignItems: 'center' }}>
-                            Click to download the latest
-                            <span className="downlaod-document" 
onClick={downloadDocument}>
-                                offline documents{' '}
-                                <img
-                                    style={{ width: '1.2rem', height: 
'1.2rem', paddingLeft: '0.2rem' }}
-                                    
src={require('@site/static/images/icon/download.png').default}
-                                    alt=""
-                                />
-                            </span>
-                        </p>
-                    </div>
-                </PageColumn>
-            </section> */}
-            <section className="verify">
-                <PageColumn
-                    align="left"
-                    title={
-                        <Translate id="download.verify" description="Verify">
-                            Verify
-                        </Translate>
-                    }
-                >
-                    <Translate id="download.verify.w1">To verify the 
downloaded files, please read</Translate>
-                    <Link to="/community/release-and-verify/release-verify">
-                        <Translate id="download.verify.w2"> Verify Apache 
Release </Translate>
-                    </Link>
-                    <Translate id="download.verify.w3"> and using these 
</Translate>
-                    <Link to="https://downloads.apache.org/doris/KEYS";>
-                        <Translate id="download.verify.w4"> Keys</Translate>
-                    </Link>
-                    <Translate id="download.verify.w5">. After verification, 
please read</Translate>
-                    <Link to="/docs/install/source-install/compilation">
-                        <Translate id="download.verify.w6"> Compilation 
</Translate>
-                    </Link>
-                    <Translate id="download.verify.w7"> and </Translate>
-                    <Link to="/docs/install/install-deploy">
-                        <Translate id="download.verify.w8"> Installation and 
Deployment </Translate>
-                    </Link>
-                    <Translate id="download.verify.w9"> to compile and install 
Doris.</Translate>
-                </PageColumn>
-            </section>
-        </Layout>
-    );
-}
diff --git a/src/pages/vendors/index.tsx b/src/pages/_vendors/index.tsx
similarity index 92%
rename from src/pages/vendors/index.tsx
rename to src/pages/_vendors/index.tsx
index 151af71ccfb..29f055e0976 100644
--- a/src/pages/vendors/index.tsx
+++ b/src/pages/_vendors/index.tsx
@@ -1,3 +1,7 @@
+// Parked page: kept for reference but intentionally not routed. The underscore
+// prefix tells Docusaurus to skip it, and /vendors now redirects to the
+// homepage (see buildRedirectIndex in docusaurus.config.js). Restore it by
+// renaming this directory back to `vendors` and dropping that redirect.
 import Layout from '../../theme/Layout';
 import { VelodbLogo } from '../../components/Icons/velodb-logo';
 import Link from '@docusaurus/Link';
diff --git a/src/pages/archive-docs/index.scss 
b/src/pages/archive-docs/index.scss
deleted file mode 100644
index e3e8322d1ff..00000000000
--- a/src/pages/archive-docs/index.scss
+++ /dev/null
@@ -1,90 +0,0 @@
-.archive-container {
-    padding: 0 1rem;
-    width: 100%;
-    margin-bottom: 5.5rem;
-    .archive-admonition {
-        padding: 2rem;
-        margin-top: 1.25rem;
-        margin-bottom: 1.25rem;
-        background-color: rgb(255, 248, 230);
-        border-radius: 6px;
-        border: 0 solid rgb(230, 167, 0);
-        border-left-width: 5px;
-        p {
-            color: rgb(107, 88, 39);
-            font-weight: 600;
-        }
-    }
-    h1 {
-        font-size: 2.25rem;
-        font-weight: 700;
-        line-height: 45px;
-        margin-top: 2.875rem;
-        margin-bottom: 1.5rem;
-    }
-    h2 {
-        padding-top: 1.25rem;
-        margin-top: 2.875rem;
-        margin-bottom: 1.25rem;
-        font-size: 1.625rem;
-        font-weight: 700;
-        line-height: 32px;
-    }
-
-    ul li {
-        margin-bottom: 1.25rem;
-        color: rgb(85, 95, 115);
-    }
-
-    .preview-item-content {
-        display: flex;
-        justify-content: space-between;
-        border-bottom: 1px solid #d6dfe6;
-    }
-
-    .preview-link {
-        display: flex;
-        align-items: center;
-    }
-
-    .preview-link > svg {
-        margin-left: 8px;
-    }
-
-    .preview-link:hover {
-        cursor: pointer;
-    }
-
-    .download-link:hover {
-        text-decoration: underline;
-        color: var(--ifm-color-primary);
-    }
-
-    .archive-tips-content {
-        margin-bottom: 5.5rem;
-    }
-
-    .latest-version-link {
-        color: var(--ifm-color-primary);
-        text-decoration: underline;
-    }
-
-    .preview-item-version {
-        font-size: 1.125rem;
-        font-weight: 600;
-    }
-    .preview-link {
-        font-size: 1.125rem;
-        font-weight: 600;
-    }
-}
-
-@media (min-width: 1280px) {
-    .archive-container {
-        margin: 0 0 5.5rem 5rem;
-        width: 834px;
-        .archive-admonition {
-            max-width: 75%;
-        }
-    }
-}
diff --git a/src/pages/archive-docs/index.tsx b/src/pages/archive-docs/index.tsx
deleted file mode 100644
index 44c96f34ed8..00000000000
--- a/src/pages/archive-docs/index.tsx
+++ /dev/null
@@ -1,165 +0,0 @@
-import React from 'react';
-import Layout from '@site/src/theme/Layout';
-import Link from '@docusaurus/Link';
-import Translate, { translate } from '@docusaurus/Translate';
-import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-import PdfIcon from '@site/static/images/toc-icon/pdf.svg';
-import { getLocalePrefix } from '@site/src/utils/locale';
-import './index.scss';
-
-const PREVIEW_LINK_ZH = 
'https://cdn.selectdb.com/static/doris_1_2_2_18e810982b.pdf';
-const PREVIEW_LINK_EN = 
'https://cdn.selectdb.com/static/doris_1_2_en_0d0a9b6a03.pdf';
-const PREVIEW_LINK_V20 = 
'https://doris.apache.org/pdf/Apache_Doris_v2_0_0b89998444.pdf';
-
-const DATE_LINK = '2025-01-17';
-
-export default function Archive() {
-    const {
-        i18n: { currentLocale, defaultLocale },
-    } = useDocusaurusContext();
-    const isZH = currentLocale === 'zh-CN';
-    const localePrefix = getLocalePrefix(currentLocale, defaultLocale);
-    const handleMouseEnter = (id: string) => {
-        const dom = document.getElementById(id);
-        dom!.style.color = 'var(--brand-primary)';
-        dom!.firstChild!.style.fill = 'var(--brand-primary)';
-    };
-
-    const handleMouseLeave = (id: string) => {
-        const dom = document.getElementById(id);
-        dom!.style.color = '#7F7F83';
-        dom!.firstChild!.style.fill = '#7F7F83';
-    };
-
-    return (
-        <Layout
-            title={translate({
-                id: 'archive.layout.title',
-                message: 'Apache Doris - Archive Document Center',
-            })}
-            description={translate({
-                id: 'archive.layout.description',
-                message: 'Collection of Apache doris archive documents',
-            })}
-        >
-            <div className="archive-container">
-                <h1>
-                    <Translate id="archive.page.title">Archived 
Docs</Translate>
-                </h1>
-                {/* <div className="archive-admonition">
-                    <p>
-                        <Translate id="archive.admonition.1">
-                            The older releases are provided for archival 
purposes only, and are no longer receives
-                            updates.
-                        </Translate>
-                    </p>
-                    <p>
-                        <Translate
-                            id="archive.page.2"
-                            values={{
-                                stableLink: (
-                                    <Link to={`/${isZH ? 'zh-CN/' : 
''}docs/gettingStarted/what-is-apache-doris`}>
-                                        <Translate 
id="archive.admonition.stable">version(2.1)</Translate>
-                                    </Link>
-                                ),
-                                latestLink: (
-                                    <Link to={`/${isZH ? 'zh-CN/' : 
''}docs/3.0/gettingStarted/what-is-apache-doris`}>
-                                        <Translate 
id="archive.admonition.latest">version(3.0)</Translate>
-                                    </Link>
-                                ),
-                            }}
-                        >
-                            {'For up-to-date documentation,please see the 
{stableLink} or {latestLink}'}
-                        </Translate>
-                    </p>
-                </div> */}
-                {/* <h2>
-                    <Translate 
id="archive.page.version">Version:1.2</Translate>
-                </h2>
-                <ul>
-                    <li>
-                        <Translate
-                            id="archive.preview.v12"
-                            values={{
-                                previewLink: (
-                                    <Link to={isZH ? PREVIEW_LINK_ZH : 
PREVIEW_LINK_EN}>
-                                        <Translate 
id="archive.preview.link">Apache Doris v1.2</Translate>
-                                    </Link>
-                                ),
-                            }}
-                        >
-                            {'Archived documentation: {previewLink}'}
-                        </Translate>{' '}
-                    </li>
-                    <li>
-                        <Translate
-                            id="archive.preview.date"
-                            values={{
-                                date: <span>{DATE_LINK}</span>,
-                            }}
-                        >
-                            {'Archive date: {date}'}
-                        </Translate>
-                    </li>
-                </ul> */}
-                <p className="archive-tips-content">
-                    <Translate id="archive-tips-1">
-                        This page archives all documents of Apache Doris's 
discontinued maintenance versions and
-                        provides PDF format for users to download.
-                    </Translate>
-                    <br />
-                    <br />
-                    <Translate
-                        id="archive-tips-2"
-                        values={{
-                            latestVersion: (
-                                <Link
-                                    className="latest-version-link"
-                                    
to={`${localePrefix}/docs/3.x/gettingStarted/what-is-apache-doris`}
-                                >
-                                    <Translate 
id="archive.latest.version">latest version</Translate>
-                                </Link>
-                            ),
-                        }}
-                    >
-                        {
-                            'Please note that archived documents no longer 
receive updates; therefore, Doris encourages you to use the {latestVersion}.'
-                        }
-                    </Translate>
-                </p>
-                {isZH && (
-                    <div className="preview-item-content">
-                        <div className="preview-item-version">Apache Doris 
v2.0</div>
-                        <a href={PREVIEW_LINK_V20} target="_blank" 
rel="noreferrer">
-                            <div
-                                className="preview-link"
-                                style={{ color: '#7F7F83' }}
-                                id="toc-icon-pdf-v20"
-                                onMouseEnter={() => 
handleMouseEnter('toc-icon-pdf-v20')}
-                                onMouseLeave={() => 
handleMouseLeave('toc-icon-pdf-v20')}
-                            >
-                                <PdfIcon />
-                                <Translate id="archive-download-text">Download 
PDF</Translate>
-                            </div>
-                        </a>
-                    </div>
-                )}
-                <div className="preview-item-content">
-                    <div className="preview-item-version">Apache Doris 
v1.2</div>
-                    <Link to={isZH ? PREVIEW_LINK_ZH : PREVIEW_LINK_EN}>
-                        <div
-                            className="preview-link"
-                            style={{ color: '#7F7F83' }}
-                            id="toc-icon-pdf-v12"
-                            onMouseEnter={() => 
handleMouseEnter('toc-icon-pdf-v12')}
-                            onMouseLeave={() => 
handleMouseLeave('toc-icon-pdf-v12')}
-                        >
-                            <PdfIcon />
-                            <Translate id="archive-download-text">Download 
PDF</Translate>
-                        </div>
-                    </Link>
-                </div>
-            </div>
-        </Layout>
-    );
-}
diff --git a/src/pages/learning/index.tsx b/src/pages/learning/index.tsx
deleted file mode 100644
index 4e1e80bc161..00000000000
--- a/src/pages/learning/index.tsx
+++ /dev/null
@@ -1,341 +0,0 @@
-import Layout from '../../theme/Layout';
-import React from 'react';
-import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-import Translate, { translate } from '@docusaurus/Translate';
-import './siteMap.scss';
-import Link from '@docusaurus/Link';
-import More from '@site/src/components/More/index';
-import PageColumn from '@site/src/components/PageColumn';
-
-const sitemapList = [
-    {
-        title: <Translate>Get Started</Translate>,
-        icon: require('@site/static/images/sitemap/sitemap-start.png').default,
-        list: [
-            {
-                title: <Translate>Introduction to Apache Doris</Translate>,
-                link: '/docs/dev/get-starting/what-is-apache-doris',
-            },
-            {
-                title: <Translate>Get Started</Translate>,
-                link: '/docs/dev/get-starting/quick-start/quick-start',
-            },
-            {
-                title: <Translate>Installation and deployment</Translate>,
-                link: '/docs/dev/install/standard-deployment',
-            },
-            {
-                title: <Translate>Compilation</Translate>,
-                link: '/docs/dev/install/source-install/compilation-general',
-            },
-        ],
-    },
-    {
-        title: <Translate>Table Design</Translate>,
-        icon: require('@site/static/images/sitemap/sitemap-model.png').default,
-        list: [
-            {
-                title: <Translate>Data Model</Translate>,
-                link: '/docs/dev/data-table/data-model',
-            },
-            {
-                title: <Translate>Data Partition</Translate>,
-                link: '/docs/dev/data-table/data-partition',
-            },
-            {
-                title: <Translate>Guidelines for Creating Table</Translate>,
-                link: '/docs/dev/data-table/basic-usage',
-            },
-            {
-                title: <Translate>Rollup and Query</Translate>,
-                link: '/docs/dev/data-table/hit-the-rollup',
-            },
-            {
-                title: <Translate>Practices of Creating Table</Translate>,
-                link: '/docs/dev/data-table/best-practice',
-            },
-            {
-                title: <Translate>Index</Translate>,
-                link: '/docs/dev/data-table/index/index-overview',
-            },
-        ],
-    },
-    {
-        title: <Translate>Data Import</Translate>,
-        icon: 
require('@site/static/images/sitemap/sitemap-refresh.png').default,
-        list: [
-            {
-                title: <Translate>Import Overview</Translate>,
-                link: '/docs/dev/data-operate/import/load-manual',
-            },
-            {
-                title: <Translate>Import Local Data</Translate>,
-                link: 
'/docs/dev/data-operate/import/import-scenes/local-file-load',
-            },
-            {
-                title: <Translate>Import External Storage Data</Translate>,
-                link: 
'/docs/dev/data-operate/import/import-scenes/external-storage-load',
-            },
-            {
-                title: <Translate>Subscribe Kafka Data</Translate>,
-                link: '/docs/dev/data-operate/import/import-scenes/kafka-load',
-            },
-            {
-                title: <Translate>Synchronize Data Through External 
Table</Translate>,
-                link: 
'/docs/dev/data-operate/import/import-scenes/external-table-load',
-            },
-        ],
-    },
-    {
-        title: <Translate>Data Export</Translate>,
-        icon: 
require('@site/static/images/sitemap/sitemap-setting.png').default,
-        list: [
-            {
-                title: <Translate>Export Data</Translate>,
-                link: '/docs/dev/data-operate/export/export-manual',
-            },
-            {
-                title: <Translate>Export Query Result</Translate>,
-                link: '/docs/dev/data-operate/export/outfile',
-            },
-            {
-                title: <Translate>Export Table Structure or Data</Translate>,
-                link: '/docs/dev/data-operate/export/export-with-mysql-dump',
-            },
-            {
-                title: <Translate>Data Backup</Translate>,
-                link: '/docs/dev/admin-manual/data-admin/backup',
-            },
-        ],
-    },
-    {
-        title: <Translate>Update and Delete</Translate>,
-        icon: 
require('@site/static/images/sitemap/sitemap-export.png').default,
-        list: [
-            {
-                title: <Translate>Update</Translate>,
-                link: '/docs/dev/data-operate/update-delete/update',
-            },
-            {
-                title: <Translate>Delete</Translate>,
-                link: '/docs/dev/data-operate/update-delete/delete-manual',
-            },
-            {
-                title: <Translate>Batch Delete</Translate>,
-                link: 
'/docs/dev/data-operate/update-delete/batch-delete-manual',
-            },
-            {
-                title: <Translate>Sequence Column</Translate>,
-                link: 
'/docs/dev/data-operate/update-delete/sequence-column-manual',
-            },
-        ],
-    },
-    {
-        title: <Translate>Advanced Usage</Translate>,
-        icon: require('@site/static/images/sitemap/sitemap-book.png').default,
-        list: [
-            {
-                title: <Translate>Schema Change</Translate>,
-                link: '/docs/dev/advanced/alter-table/schema-change',
-            },
-            {
-                title: <Translate>Dynamic Partition</Translate>,
-                link: '/docs/dev/advanced/partition/dynamic-partition',
-            },
-            {
-                title: <Translate>Data Cache</Translate>,
-                link: '/docs/dev/advanced/cache/partition-cache',
-            },
-            {
-                title: <Translate>Join Optimization</Translate>,
-                link: 
'/docs/dev/query-acceleration/join-optimization/doris-join-optimization',
-            },
-            {
-                title: <Translate>Materialized view</Translate>,
-                link: '/docs/dev/query-acceleration/materialized-view',
-            },
-            {
-                title: <Translate>BITMAP Precise De-Duplication</Translate>,
-                link: '/docs/dev/advanced/orthogonal-bitmap-manual',
-            },
-            {
-                title: <Translate>HLL ApproximateDe-duplication</Translate>,
-                link: '/docs/dev/advanced/using-hll',
-            },
-            {
-                title: <Translate>Variables</Translate>,
-                link: '/docs/dev/advanced/variables',
-            },
-            {
-                title: <Translate>Time Zone</Translate>,
-                link: '/docs/dev/advanced/time-zone',
-            },
-            {
-                title: <Translate>File Manager</Translate>,
-                link: '/docs/dev/advanced/small-file-mgr',
-            },
-        ],
-    },
-    {
-        title: <Translate>Ecosystem</Translate>,
-        icon: 
require('@site/static/images/sitemap/sitemap-search.png').default,
-        list: [
-            {
-                title: <Translate>Spark Doris Connector</Translate>,
-                link: '/docs/dev/ecosystem/spark-doris-connector',
-            },
-            {
-                title: <Translate>Flink Doris Connector</Translate>,
-                link: '/docs/dev/ecosystem/flink-doris-connector',
-            },
-            {
-                title: <Translate>Seatunnel Connector</Translate>,
-                link: '/docs/dev/ecosystem/seatunnel',
-            },
-            {
-                title: <Translate>DataX doriswriter</Translate>,
-                link: '/docs/dev/ecosystem/datax',
-            },
-            {
-                title: <Translate>UDF</Translate>,
-                link: '/docs/dev/ecosystem/udf/java-user-defined-function',
-            },
-            {
-                title: <Translate>Audit log plugin</Translate>,
-                link: '/docs/dev/ecosystem/audit-plugin',
-            },
-        ],
-    },
-    {
-        title: <Translate>SQL Manual</Translate>,
-        icon: require('@site/static/images/sitemap/sitemap-sql.png').default,
-        list: [
-            {
-                title: <Translate>SQL Function</Translate>,
-                link: 
'/docs/dev/sql-manual/sql-functions/array-functions/array',
-            },
-            {
-                title: <Translate>DDL</Translate>,
-                link: 
'/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-CATALOG',
-            },
-            {
-                title: <Translate>DML</Translate>,
-                link: 
'/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/INSERT',
-            },
-            {
-                title: <Translate>Data Types</Translate>,
-                link: '/docs/dev/sql-manual/sql-reference/Data-Types/BOOLEAN',
-            },
-            {
-                title: <Translate>Utility</Translate>,
-                link: 
'/docs/dev/sql-manual/sql-reference/Utility-Statements/HELP',
-            },
-        ],
-    },
-    {
-        title: <Translate>Cluster Management</Translate>,
-        icon: require('@site/static/images/sitemap/sitemap-admin.png').default,
-        list: [
-            {
-                title: <Translate>Cluster Upgrade</Translate>,
-                link: '/docs/dev/admin-manual/cluster-management/upgrade',
-            },
-            {
-                title: <Translate>Elastic Scaling</Translate>,
-                link: 
'/docs/dev/admin-manual/cluster-management/elastic-expansion',
-            },
-            {
-                title: <Translate>Statistics of Query Execution</Translate>,
-                link: '/docs/dev/admin-manual/query-profile',
-            },
-            {
-                title: <Translate>Maintenance and Monitor</Translate>,
-                link: '/docs/dev/admin-manual/maint-monitor/monitor-alert',
-            },
-            {
-                title: <Translate>Metadata Operation</Translate>,
-                link: 
'/docs/dev/admin-manual/maint-monitor/metadata-operation',
-            },
-            {
-                title: <Translate>Error Code</Translate>,
-                link: '/docs/dev/admin-manual/maint-monitor/doris-error-code',
-            },
-            {
-                title: <Translate>Config</Translate>,
-                link: '/docs/dev/admin-manual/config/fe-config',
-            },
-            {
-                title: <Translate>Authority Management</Translate>,
-                link: '/docs/dev/admin-manual/privilege-ldap/user-privilege',
-            },
-            {
-                title: <Translate>Multi-tenancy</Translate>,
-                link: '/docs/dev/admin-manual/multi-tenant',
-            },
-        ],
-    },
-    {
-        title: <Translate>FAQ</Translate>,
-        icon: 
require('@site/static/images/sitemap/sitemap-question.png').default,
-        list: [
-            {
-                title: <Translate>FAQs of Operation and 
Maintenance</Translate>,
-                link: '/docs/dev/faq/install-faq',
-            },
-            {
-                title: <Translate>FAQs of Data Operation</Translate>,
-                link: '/docs/dev/faq/data-faq',
-            },
-            {
-                title: <Translate>SQL FAQs</Translate>,
-                link: '/docs/dev/faq/sql-faq',
-            },
-        ],
-    },
-];
-export default function Learning(): JSX.Element {
-    const { siteConfig } = useDocusaurusContext();
-    return (
-        <Layout
-            title={translate({ id: 'sitemap.title', message: 'Learning Path' 
})}
-            description={translate({
-                id: 'sitemap.subTitle',
-                message: '',
-            })}
-        >
-            <section className="sitemap">
-                <PageColumn
-                    align="left"
-                    title={
-                        <Translate id="sitemap.page.title" description="">
-                            Learning Path
-                        </Translate>
-                    }
-                    subTitle={
-                        <Translate id="sitemap.page.subTitle" description="">
-                            Start your journey here to discover infinite 
possibilities with Apache Doris.
-                        </Translate>
-                    }
-                >
-                    <div className="sitemap-list row">
-                        {sitemapList.map((item, index) => (
-                            <div className="sitemap-item" key={index}>
-                                <div 
className="sitemap-title">{item.title}</div>
-                                <div className="sitemap-icon">
-                                    <img src={item.icon} alt="" />
-                                </div>
-                                <div className="sitemap-paths">
-                                    {item.list.map(path => (
-                                        <Link to={path.link} key={path.link} 
className="path-link">
-                                            {path.title}
-                                        </Link>
-                                    ))}
-                                </div>
-                            </div>
-                        ))}
-                    </div>
-                </PageColumn>
-            </section>
-        </Layout>
-    );
-}
diff --git a/src/pages/learning/siteMap.scss b/src/pages/learning/siteMap.scss
deleted file mode 100644
index be4e7db7a77..00000000000
--- a/src/pages/learning/siteMap.scss
+++ /dev/null
@@ -1,104 +0,0 @@
-.sitemap {
-    .page-column {
-        padding-top: 3rem;
-    }
-}
-
-.sitemap-list {
-    display: flex;
-    flex-direction: column;
-    padding: 0 1rem;
-    line-height: 1.6;
-    margin-top: 3rem;
-
-    .sitemap-item {
-        display: flex;
-        align-items: center;
-        position: relative;
-        padding-bottom: 1.25rem;
-
-        &:first-child .sitemap-icon:after {
-            top: 50%;
-        }
-
-        &:last-child .sitemap-icon:after {
-            bottom: 50%;
-        }
-
-        .sitemap-title {
-            font-size: 1.2rem;
-            width: 12rem;
-        }
-
-        .sitemap-icon {
-            padding: 0 3rem;
-            display: flex;
-            align-items: center;
-
-            img {
-                width: 2.6rem;
-                height: 2.6rem;
-                position: relative;
-                z-index: 2;
-            }
-
-            &:after {
-                content: '';
-                border-left: 1px solid #F0F1FC;
-                position: absolute;
-                left: 16.3rem;
-                top: 0;
-                bottom: 0;
-            }
-        }
-
-        .sitemap-paths {
-            flex: 1;
-            border: 1px solid #E6E8FB;
-            color: #252734;
-            font-size: 1rem;
-            padding: 0.8rem 0.8rem;
-
-            .path-link {
-                display: inline-block;
-                width: 33.333%;
-                padding: 0 0.5rem;
-                overflow: hidden;
-                white-space: nowrap;
-                text-overflow: ellipsis;
-                line-height: 2;
-                color: #484954;
-                text-decoration: none;
-
-                &:hover {
-                    color: var(--ifm-color-primary);
-                }
-            }
-        }
-    }
-}
-
-@media (max-width: 996px) {
-    .sitemap-list {
-        .sitemap-item {
-            .sitemap-title {
-                width: 7rem;
-                padding-right: 0.4rem;
-                word-break: break-word;
-            }
-
-            .sitemap-icon {
-                display: none;
-            }
-
-            .sitemap-paths {
-                padding: 0.6rem;
-
-                .path-link {
-                    width: 50%;
-                }
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/static/images/sitemap/sitemap-admin.png 
b/static/images/sitemap/sitemap-admin.png
deleted file mode 100644
index 7f2b396377b..00000000000
Binary files a/static/images/sitemap/sitemap-admin.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-book.png 
b/static/images/sitemap/sitemap-book.png
deleted file mode 100644
index b995857f313..00000000000
Binary files a/static/images/sitemap/sitemap-book.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-export.png 
b/static/images/sitemap/sitemap-export.png
deleted file mode 100644
index 6895360af34..00000000000
Binary files a/static/images/sitemap/sitemap-export.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-model.png 
b/static/images/sitemap/sitemap-model.png
deleted file mode 100644
index aef5d276584..00000000000
Binary files a/static/images/sitemap/sitemap-model.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-question.png 
b/static/images/sitemap/sitemap-question.png
deleted file mode 100644
index de920cd13c2..00000000000
Binary files a/static/images/sitemap/sitemap-question.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-refresh.png 
b/static/images/sitemap/sitemap-refresh.png
deleted file mode 100644
index a08a27bf353..00000000000
Binary files a/static/images/sitemap/sitemap-refresh.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-search.png 
b/static/images/sitemap/sitemap-search.png
deleted file mode 100644
index ba7babe3fcb..00000000000
Binary files a/static/images/sitemap/sitemap-search.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-setting.png 
b/static/images/sitemap/sitemap-setting.png
deleted file mode 100644
index 66e05964e16..00000000000
Binary files a/static/images/sitemap/sitemap-setting.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-sql.png 
b/static/images/sitemap/sitemap-sql.png
deleted file mode 100644
index 26d3aedeede..00000000000
Binary files a/static/images/sitemap/sitemap-sql.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-start.png 
b/static/images/sitemap/sitemap-start.png
deleted file mode 100644
index 12fe09063cc..00000000000
Binary files a/static/images/sitemap/sitemap-start.png and /dev/null differ
diff --git a/static/images/toc-icon/pdf.svg b/static/images/toc-icon/pdf.svg
deleted file mode 100644
index 6edc4f74554..00000000000
--- a/static/images/toc-icon/pdf.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<svg width="21" height="20" viewBox="0 0 21 20" fill="#7F7F83" 
xmlns="http://www.w3.org/2000/svg";>
-    <path
-        d="M15.9444 3H5.05552C4.19998 3 3.5 3.70001 3.5 4.55559V15.4445C3.5 
16.3 4.19998 17 5.05552 17H15.9444C16.8 17 17.5 16.3 17.5 15.4445V4.55559C17.5 
3.70005 16.8 3 15.9444 3ZM10.1528 8.99791C9.97401 9.57345 9.76864 10.4635 
9.46656 11.1952C9.31081 11.5909 9.31836 11.522 9.20126 11.7719L9.30237 
11.7391C10.3415 11.4483 11.0691 11.3762 11.7457 11.2517C11.6099 11.1445 11.4919 
11.0616 11.3985 10.9761C10.9336 10.4614 10.7714 10.3648 10.1528 
8.99791ZM15.2525 12.2945C15.1202 12.4423 14.8869 [...]
-    />
-</svg>
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to