Create Subpage in html

Calico picture Calico · Jul 3, 2014 · Viewed 46.2k times · Source

Let's say I have a website http://www.example.com

I want to create more subpages to this page i.e.

www.example.com/faq

www.example.com/contact

etc.

I'm pretty new to web design and my current knowledge extends to making basic websites using HTML, CSS, and a little JS.

Answer

Gust van de Wal picture Gust van de Wal · Jul 3, 2014

You'll need to create new HTML files called faq.html and contact.html for this instance. Then you can link to these pages with <a> tags.

EDIT
After half a decade, this answer has started getting upvotes, while not being as complete as the longer answer here. Here are some more details:

When you create extra HTML files and visit them, you'll see that the URL also contains the .html-part. This is something most people don't want. Provided you're using a webserver (either local or with a third-party host), there are multiple ways to get rid of the extension — one of which doesn't require server-side scripts and has been documented in Stephen's comment below.

What you do, is you add folders with the appropiate names (faq, contact, etc.). Once you have the folders set up, all you have to do is put index files inside them (index.html). Those index files should contain the content for their respective parent folders.

In essence, this is repeating the process with which the root location of a website is created, but for subfolders. You see, oftentimes you start out with a root folder called public_html, in which there is a single index file. Webservers automatically serve index files:

public_html/index.html     -> example.com/index.html
                           -> example.com/

public_html/faq/index.html -> example.com/faq/index.html
                           -> example.com/faq/  ←  😎

As you can see, when done, you can visit

www.example.com/faq

Instead of

www.example.com/faq/index.html

Just like how you can visit

www.example.com

Instead of

www.example.com/index.html

If you feel like you want more fine-grained control, you're better off using server-side scripts. Whatever server language you use, you are in total control over where people navigate and what they get to see, no matter what the request looks like.

If you're using an Apache server, you can take a look at what an .htaccess file is, though writing and debugging them is arduous IMO.