Creating pages lets you build different screens or views for your website. Each page shows unique content to visitors.
Creating pages in Astro
Create a new file inside the src/pages folder with a .astro extension. Example: src/pages/about.astro Inside the file, write HTML and Astro components to build the page content.
Each file in src/pages automatically becomes a route (URL) on your site.
The file name determines the page URL. For example, about.astro becomes /about.
---
// No frontmatter needed for simple pages
---
<html>
<head><title>Home</title></head>
<body>
<h1>Welcome to my site</h1>
</body>
</html>--- const name = 'Astro User'; --- <html> <head><title>About</title></head> <body> <h1>About {name}</h1> <p>This is the about page.</p> </body> </html>
--- import Layout from '../layouts/BaseLayout.astro'; --- <Layout> <h1>Contact Us</h1> <form> <label for="email">Email:</label> <input id="email" type="email" /> <button type="submit">Send</button> </form> </Layout>
This is a complete Astro page component. It sets a page title and shows a header, main content, and footer. Save this as src/pages/index.astro to create the homepage.
--- const title = 'My First Astro Page'; --- <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>{title}</title> </head> <body> <header> <h1>{title}</h1> </header> <main> <p>Welcome to your new Astro page.</p> </main> <footer> <small>Ā© 2024 Astro Site</small> </footer> </body> </html>
Page files must be inside the src/pages folder to become routes.
Use index.astro for the homepage at /.
File names with brackets like [slug].astro create dynamic routes.
Creating pages means making files in src/pages with .astro extension.
Each page file becomes a URL on your website automatically.
You can add HTML, components, and frontmatter to build your page content.
Practice
.astro file inside the src/pages folder in an Astro project?Solution
Step 1: Understand Astro's file-based routing
Astro automatically creates routes from files insrc/pages. Each.astrofile becomes a page.Step 2: Connect file name to URL
The file name directly maps to the URL path, so creating a file adds a new page accessible by that URL.Final Answer:
A new webpage is automatically created with a URL matching the file name. -> Option CQuick Check:
File insrc/pages= new page URL [OK]
- Thinking you must import page files manually
- Confusing components with pages
- Believing a routing config is needed
Solution
Step 1: Identify homepage naming convention
In Astro, the homepage URL is/, which maps toindex.astroinsrc/pages.Step 2: Check folder and file placement
The file must be directly insidesrc/pagesand namedindex.astroto serve as homepage.Final Answer:
Create a file namedindex.astroinsidesrc/pages. -> Option DQuick Check:
Homepage =src/pages/index.astro[OK]
index.astro in pages folder [OK]- Naming homepage file anything other than index.astro
- Placing homepage file in components folder
- Using nested folders incorrectly for homepage
src/pages/about.astro with content:<!-- src/pages/about.astro --> <h1>About Us</h1> <p>Welcome to our site.</p>
What URL will display this page when running the Astro dev server?
Solution
Step 1: Map file path to URL
The fileabout.astroinsidesrc/pagesmaps to the URL path/about.Step 2: Understand URL structure
Astro removes the file extension and folder prefixsrc/pagesfrom the URL, so the URL is/about.Final Answer:
http://localhost:3000/about -> Option AQuick Check:
File name = URL path [OK]
- Including .astro extension in URL
- Adding 'pages' folder name to URL
- Guessing URL from page content
src/pages/contact.astro but visiting /contact shows a 404 error. What is the most likely cause?Solution
Step 1: Verify file placement
The most likely cause is that the file is actually insidesrc/componentsinstead ofsrc/pages. Components folder files do not create routes.Step 2: Syntax errors cause error pages, not 404
Syntax errors show an error screen when visiting the route, not a 404 Page Not Found.Step 3: Dev server auto-reloads
Astro detects new pages automatically, restart rarely needed.Final Answer:
The file is placed insidesrc/componentsinstead ofsrc/pages. -> Option BQuick Check:
404 on new page = check pages vs components folder [OK]
- Assuming routing config is needed
- Not checking file syntax
- Misplacing file in components folder
/blog/post1. Which file structure and naming is correct in Astro?Solution
Step 1: Understand nested routing in Astro
Folders insidesrc/pagescreate nested URL paths automatically.Step 2: Map file to nested URL
Placingpost1.astroinsidesrc/pages/blogcreates URL/blog/post1.Step 3: Check alternatives
Createsrc/pages/blog-post1.astrofile creates flat URL/blog-post1. Createsrc/pages/blog/post1/index.htmlfile creates no route (.html not supported as pages). Createsrc/pages/blog/post1.astroand add a routing config is incorrect because Astro does not require routing config.Final Answer:
Createsrc/pages/blog/post1.astrofile. -> Option AQuick Check:
Nested folder + file = nested URL [OK]
- Using hyphens instead of folders for nesting
- Adding unnecessary routing config
- Confusing index.astro usage for nested pages
Ready to prove it?
Pass the test and this pattern moves unknown
