Bird
Raised Fist0
Astroframework~10 mins

404 and error pages in Astro - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - 404 and error pages
User requests URL
↓
Check if page exists
↓
Show 404 page
↓
Render page
↓
If error occurs
↓
Show error page
↓
End
When a user requests a page, Astro checks if it exists. If not, it shows a 404 page. If an error happens, it shows an error page.
Execution Sample
Astro
---
export function getStaticPaths() {
  return [];
}

if (!pageExists(Astro.params.slug)) {
  throw new Response('Page not found', { status: 404 });
}
---
This code checks if a page exists for a slug; if not, it throws a 404 response.
Execution Table
StepActionInputCheckResultOutput
1User requests '/home'slug='home'pageExists('home')?TrueRender page content
2User requests '/about'slug='about'pageExists('about')?TrueRender page content
3User requests '/missing'slug='missing'pageExists('missing')?FalseReturn 404 page
4User requests '/error'slug='error'pageExists('error')?Error thrownReturn error page
5End---Response sent
💡 Execution stops after sending the appropriate page response (normal, 404, or error).
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4Final
slugundefined'home''about''missing''error'undefined
pageExists(slug)N/AtruetruefalseerrorN/A
responseundefinedpage contentpage content404 pageerror pagesent
Key Moments - 2 Insights
Why does the 404 page show instead of the normal page?
Because pageExists(slug) returned false (see execution_table step 3), so the code throws a 404 response instead of rendering page content.
What happens if an error occurs during page check?
If an error is thrown (execution_table step 4), Astro catches it and returns an error page to the user.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output when slug is 'missing'?
ARender page content
BReturn error page
CReturn 404 page
DNo output
💡 Hint
Check execution_table row 3 under Output column.
At which step does the condition pageExists(slug) become false?
AStep 3
BStep 2
CStep 1
DStep 4
💡 Hint
Look at the Check column in execution_table for when pageExists(slug) is false.
If the user requests '/error', what does the code return?
ARender page content
BReturn error page
CReturn 404 page
DNo response
💡 Hint
See execution_table step 4 Output column.
Concept Snapshot
In Astro, when a user requests a page, the system checks if it exists.
If it does, the page renders normally.
If not, a 404 page is shown.
If an error occurs, an error page is shown.
Use status codes 404 for missing pages and handle errors gracefully.
Full Transcript
When a user visits a URL, Astro checks if the page exists. If it does, Astro renders the page content. If the page does not exist, Astro returns a 404 status and shows a 404 page. If an error happens during this process, Astro returns an error page. This flow ensures users see helpful messages instead of blank or broken pages.

Practice

(1/5)
1. What is the main purpose of a 404.astro page in an Astro project?
easy
A. To speed up the loading of the homepage
B. To display the site map automatically
C. To handle user login and authentication
D. To show a friendly message when a user visits a page that does not exist

Solution

  1. Step 1: Understand the role of 404 pages

    A 404 page appears when a user tries to visit a page that the website cannot find.
  2. Step 2: Identify the purpose in Astro

    In Astro, 404.astro is used to show a friendly message for missing pages.
  3. Final Answer:

    To show a friendly message when a user visits a page that does not exist -> Option D
  4. Quick Check:

    404 page = friendly missing page message [OK]
Hint: 404 pages show missing page messages [OK]
Common Mistakes:
  • Thinking 404 pages speed up the homepage
  • Confusing 404 pages with login pages
  • Assuming 404 pages show site maps
2. Which file name should you create in an Astro project to automatically handle 404 errors?
easy
A. error.astro
B. notfound.astro
C. 404.astro
D. page404.astro

Solution

  1. Step 1: Recall Astro's naming convention for 404 pages

    Astro uses the exact file name 404.astro to detect and serve 404 error pages automatically.
  2. Step 2: Compare options with the required file name

    Only 404.astro matches the required name; others won't be recognized automatically.
  3. Final Answer:

    404.astro -> Option C
  4. Quick Check:

    404 page file = 404.astro [OK]
Hint: Use exact file name 404.astro for error pages [OK]
Common Mistakes:
  • Using names like error.astro or notfound.astro
  • Adding prefixes or suffixes to 404 file name
  • Assuming any file with '404' works
3. Given this 404.astro code snippet, what will the user see when visiting a missing page?
<!-- 404.astro -->
<h1>Oops! Page not found.</h1>
<p>Try going back to the <a href='/'>homepage</a>.</p>
medium
A. A blank page with no message
B. A message saying 'Oops! Page not found.' with a link to homepage
C. An error message with code 500
D. The homepage content without any error message

Solution

  1. Step 1: Read the 404.astro content

    The code shows a heading with 'Oops! Page not found.' and a paragraph with a homepage link.
  2. Step 2: Understand what Astro renders on missing pages

    Astro will display this content when a user visits a missing page.
  3. Final Answer:

    A message saying 'Oops! Page not found.' with a link to homepage -> Option B
  4. Quick Check:

    404 page shows friendly message + homepage link [OK]
Hint: 404 page content shows on missing pages [OK]
Common Mistakes:
  • Expecting a blank page instead of message
  • Confusing 404 with server error 500
  • Thinking homepage content shows on 404
4. You created a 404.astro page but it does not show when visiting a missing page. What is the most likely mistake?
medium
A. The 404.astro file is inside the src/components folder
B. The file is named 404.html instead of 404.astro
C. The homepage link is missing inside the 404 page
D. The project does not have a package.json file

Solution

  1. Step 1: Check file location requirements in Astro

    Astro expects 404.astro to be in the root of the src/pages folder, not inside components.
  2. Step 2: Understand why wrong location breaks 404 page

    If placed in src/components, Astro won't serve it automatically as a 404 page.
  3. Final Answer:

    The 404.astro file is inside the src/components folder -> Option A
  4. Quick Check:

    404 page must be in pages folder [OK]
Hint: Place 404.astro in src/pages folder [OK]
Common Mistakes:
  • Naming file 404.html instead of 404.astro
  • Putting 404.astro in components folder
  • Thinking missing homepage link breaks 404 page
  • Assuming package.json affects 404 page
5. You want to create a custom error page in Astro that shows different messages for 404 and 500 errors. Which approach is best?
hard
A. Create separate 404.astro and 500.astro files in src/pages
B. Use only 404.astro and add JavaScript to detect 500 errors
C. Create a single error.astro file and rename it to 404.astro when needed
D. Handle errors only in client-side JavaScript, no Astro pages needed

Solution

  1. Step 1: Understand Astro's error page handling

    Astro supports special files like 404.astro and 500.astro to handle different error codes automatically.
  2. Step 2: Choose the best way to show different messages

    Creating separate files for 404 and 500 errors is clean and follows Astro conventions.
  3. Final Answer:

    Create separate 404.astro and 500.astro files in src/pages -> Option A
  4. Quick Check:

    Separate files for each error code [OK]
Hint: Use separate 404.astro and 500.astro files [OK]
Common Mistakes:
  • Trying to detect errors with JavaScript in 404.astro
  • Renaming files manually instead of separate files
  • Ignoring server-side error handling
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard