diff --git a/package.json b/package.json index 40a1613..9b36883 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ }, "packageManager": "npm@11.0.0", "engines": { - "node": "22.12.0" + "node": "22.13.0" }, "overrides": { "astro-uploader": { diff --git a/src/pages/cats/[slug]/page/[num].astro b/src/pages/cats/[slug]/page/[num].astro index 2deca9e..1dd11d8 100644 --- a/src/pages/cats/[slug]/page/[num].astro +++ b/src/pages/cats/[slug]/page/[num].astro @@ -20,7 +20,7 @@ const pageSize = options.settings.pagination.category; const total = Math.ceil(filteredPosts.length / pageSize); if (pageNum > total) { - return Astro.redirect('/404'); + return Astro.redirect(`${total}`, 302); } --- diff --git a/src/pages/page/[num].astro b/src/pages/page/[num].astro index 5bc8d25..ce0e2b8 100644 --- a/src/pages/page/[num].astro +++ b/src/pages/page/[num].astro @@ -1,6 +1,7 @@ --- import { posts, tags } from '@/helpers/schema'; import PostsLayout from '@/layouts/posts/PostsLayout.astro'; +import options from '@/options'; const { num } = Astro.params; @@ -13,6 +14,11 @@ const pageNum = Number.parseInt(num); if (pageNum <= 1) { return Astro.redirect('/'); } + +const total = Math.ceil(posts.length / options.settings.pagination.posts); +if (pageNum > total) { + return Astro.redirect(`${total}`, 302); +} --- <PostsLayout {posts} {pageNum} {tags} /> diff --git a/src/pages/search/[keyword]/page/[num].astro b/src/pages/search/[keyword]/page/[num].astro index 629ed6c..5ae1672 100644 --- a/src/pages/search/[keyword]/page/[num].astro +++ b/src/pages/search/[keyword]/page/[num].astro @@ -21,11 +21,10 @@ const searchResults = searchPosts(query) .map((slug) => posts.find((post) => post.slug === slug)) .filter((post) => post !== undefined); -const pageSize = options.settings.pagination.tags; -const total = Math.ceil(searchResults.length / pageSize); +const total = Math.ceil(searchResults.length / options.settings.pagination.tags); if (pageNum > total) { - return Astro.redirect('/404'); + return Astro.redirect(`${total}`, 302); } --- diff --git a/src/pages/tags/[slug]/page/[num].astro b/src/pages/tags/[slug]/page/[num].astro index 8e7cb84..33bafb6 100644 --- a/src/pages/tags/[slug]/page/[num].astro +++ b/src/pages/tags/[slug]/page/[num].astro @@ -20,7 +20,7 @@ const pageSize = options.settings.pagination.tags; const total = Math.ceil(filteredPosts.length / pageSize); if (pageNum > total) { - return Astro.redirect('/404'); + return Astro.redirect(`${total}`, 302); } ---