📖 Scenario: You are managing a small business website that needs to host two separate sites: a main company site and a blog. You want to use Firebase Hosting to serve both sites from the same Firebase project but on different URLs.
🎯 Goal: Set up Firebase Hosting to deploy two different sites under one Firebase project using multiple site hosting configuration.
📋 What You'll Learn
Create a Firebase configuration file with two hosting sites
Add site-specific public directories for each site
Configure hosting targets for the main site and the blog site
Deploy both sites using Firebase CLI
💡 Why This Matters
🌍 Real World
Many businesses and developers want to host multiple websites or apps under one Firebase project to save costs and simplify management.
💼 Career
Understanding multiple site hosting is useful for cloud engineers and web developers managing scalable web infrastructure.
Progress0 / 4 steps
1
Create Firebase Hosting configuration with two sites
Create a firebase.json file with a hosting array containing two site configurations. The first site should have target set to main-site and public directory set to public-main. The second site should have target set to blog-site and public directory set to public-blog.
Firebase
Hint
Use an array under hosting with two objects, each having target and public keys.
2
Add site-specific public directories
Create two folders named public-main and public-blog in your project directory. Add an index.html file inside each folder with simple HTML content: <h1>Main Site</h1> in public-main/index.html and <h1>Blog Site</h1> in public-blog/index.html.
Firebase
Hint
Make sure each folder has an index.html file with the correct heading.
3
Configure hosting targets in Firebase CLI
In your Firebase project, run firebase target:apply hosting main-site main-site and firebase target:apply hosting blog-site blog-site to set hosting targets for the main site and blog site respectively.
Firebase
Hint
Use the exact commands to assign hosting targets for each site.
4
Deploy both sites using Firebase CLI
Deploy both sites by running firebase deploy --only hosting:main-site,hosting:blog-site in your terminal to publish the main site and blog site to Firebase Hosting.
Firebase
Hint
Use the firebase deploy command with the --only hosting:main-site,hosting:blog-site option.
Practice
(1/5)
1. What is the main benefit of using multiple site hosting in Firebase?
easy
A. Manage several websites under one Firebase project
B. Increase database storage automatically
C. Enable offline data synchronization
D. Create unlimited Firebase projects
Solution
Step 1: Understand multiple site hosting purpose
Multiple site hosting allows managing multiple websites within a single Firebase project.
Step 2: Compare options
Options B, C, and D relate to other Firebase features, not multiple site hosting.
Final Answer:
Manage several websites under one Firebase project -> Option A
Quick Check:
Multiple site hosting = Manage multiple sites [OK]
Hint: Multiple site hosting means many sites in one project [OK]
Common Mistakes:
Confusing hosting with database features
Thinking it creates new Firebase projects
Assuming it automatically increases storage
2. Which file must you edit to define multiple hosting sites in a Firebase project?
easy
A. package.json
B. index.html
C. .firebaserc
D. firebase.json
Solution
Step 1: Identify configuration file for hosting
The firebase.json file holds hosting configurations including multiple sites.
Step 2: Eliminate other files
index.html is a webpage, package.json is for Node.js dependencies, and .firebaserc stores project aliases but not hosting sites.
Final Answer:
firebase.json -> Option D
Quick Check:
Hosting sites defined in firebase.json [OK]
Hint: Hosting config is always in firebase.json [OK]
What command links the target siteA to a Firebase Hosting site ID?
medium
A. firebase target:apply hosting siteA your-site-id
B. firebase deploy --only hosting:siteA
C. firebase init hosting siteA
D. firebase hosting:link siteA your-site-id
Solution
Step 1: Understand target linking command
The command firebase target:apply hosting <target> <site-id> links a target name to a Firebase Hosting site ID.
Step 2: Review options
firebase deploy --only hosting:siteA deploys hosting but does not link targets. firebase init hosting siteA initializes hosting but does not link targets. firebase hosting:link siteA your-site-id is not a valid Firebase CLI command.
Final Answer:
firebase target:apply hosting siteA your-site-id -> Option A
Quick Check:
Target apply links target to site ID [OK]
Hint: Use 'firebase target:apply hosting' to link targets [OK]
Common Mistakes:
Using deploy instead of target:apply to link
Trying to link with firebase init
Assuming 'hosting:link' is a valid command
4. You added two sites in firebase.json hosting array but forgot to run firebase target:apply hosting. What happens when you deploy?
medium
A. Firebase creates new site IDs automatically
B. Both sites deploy successfully with default site IDs
C. Deployment fails with an error about missing target link
D. Only the first site deploys, second is ignored silently
Solution
Step 1: Understand target linking requirement
Each hosting target must be linked to a Firebase Hosting site ID using firebase target:apply hosting.
Step 2: Consequence of missing link
If targets are not linked, deployment fails with an error indicating missing target link.
Final Answer:
Deployment fails with an error about missing target link -> Option C
Quick Check:
Missing target link causes deployment error [OK]
Hint: Always link targets before deploying multiple sites [OK]
Common Mistakes:
Assuming Firebase auto-links targets
Expecting silent ignore of unlinked sites
Thinking deployment creates new site IDs
5. You want to host two websites: a blog and a store, under one Firebase project. You defined them in firebase.json hosting array with targets blog and store. Which sequence correctly sets up and deploys both sites?
hard
A. Run firebase deploy --only hosting:blog,hosting:store directly without linking targets
B. Run firebase target:apply hosting blog blog-site-id and firebase target:apply hosting store store-site-id, then firebase deploy --only hosting
C. Add sites in .firebaserc and run firebase deploy
D. Run firebase init hosting blog and firebase init hosting store then deploy
Solution
Step 1: Link each target to its Firebase Hosting site ID
Use firebase target:apply hosting <target> <site-id> for both blog and store targets.
Step 2: Deploy all hosting targets
Run firebase deploy --only hosting to deploy all defined hosting sites.
Final Answer:
Run target:apply for blog and store, then deploy hosting -> Option B
Quick Check:
Link targets first, then deploy hosting [OK]
Hint: Link targets first, then deploy all hosting sites [OK]
Common Mistakes:
Deploying without linking targets
Trying to define sites only in .firebaserc
Using firebase init hosting multiple times incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.