Want your own website on the internet — a page about you, your guild, your project, or a simple portfolio? You do not need WordPress or complex frameworks to get started. With HTML, a bit of CSS, and optionally PHP for a contact form, you can have a working website in a few hours.
This guide shows how to build that page on your computer and publish it via FTP on your Battlehorns hosting.
New to FTP? Start with our How to Use FTP with FileZilla tutorial.
What you need
- A hosting plan with PHP (e.g. Battlehorns)
- FTP/SFTP access to your web space
- A text editor (VS Code, Notepad++, or similar)
- Optional: FTP client like FileZilla
Overview (5 steps)
- Create the file structure on your PC
- Write
index.html(main page) - Add styling with CSS
- Optional: PHP contact form
- Upload everything via FTP to
public_html
Step 1 — Folder structure on your PC
Create a folder on your computer, e.g. my-site:
my-site/
├── index.html
├── css/
│ └── style.css
├── img/
│ └── logo.png
└── contact.php (optional)
Step 2 — Main page in HTML
Create index.html with a basic structure:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Website</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
<h1>Welcome to my site</h1>
<nav>
<a href="#about">About</a>
<a href="#contact">Contact</a>
</nav>
</header>
<main>
<section id="about">
<h2>About me</h2>
<p>This is my first website. Here I share information about my project.</p>
</section>
<section id="contact">
<h2>Contact</h2>
<form action="contact.php" method="post">
<label>Name<br><input type="text" name="name" required></label><br><br>
<label>Email<br><input type="email" name="email" required></label><br><br>
<label>Message<br><textarea name="message" rows="4" required></textarea></label><br><br>
<button type="submit">Send</button>
</form>
</section>
</main>
<footer>
<p>© 2026 — My Website</p>
</footer>
</body>
</html>
Step 3 — Styling with CSS
In css/style.css:
body {
font-family: Arial, sans-serif;
line-height: 1.6;
max-width: 800px;
margin: 0 auto;
padding: 1.5rem;
background: #0f172a;
color: #e2e8f0;
}
header {
border-bottom: 2px solid #0ff;
margin-bottom: 2rem;
padding-bottom: 1rem;
}
nav a {
color: #0ff;
margin-right: 1rem;
text-decoration: none;
}
button {
background: #0ff;
color: #000;
border: none;
padding: 0.6rem 1.2rem;
border-radius: 6px;
cursor: pointer;
font-weight: bold;
}
input, textarea {
width: 100%;
max-width: 400px;
padding: 0.5rem;
border: 1px solid #334155;
border-radius: 4px;
background: #1e293b;
color: #fff;
}
Open index.html in your browser (double-click the file) to preview before uploading.
Step 4 — PHP contact form (optional)
If your hosting has PHP (Battlehorns plans do), create contact.php:
<?php
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$message = trim($_POST['message'] ?? '');
if ($name === '' || $email === '' || $message === '') {
header('Location: index.html?error=1#contact');
exit;
}
$to = '[email protected]';
$subject = 'Website contact — ' . $name;
$body = "Name: $name
Email: $email
Message:
$message";
$headers = 'From: ' . $email;
if (mail($to, $subject, $body, $headers)) {
header('Location: index.html?sent=1#contact');
} else {
header('Location: index.html?error=1#contact');
}
exit;
?>
Important: replace [email protected] with your real email. The mail() function depends on server configuration — on many hostings it works out of the box; if not, use an external form service (Formspree, etc.) while you learn.
Step 5 — Upload via FTP
- Connect via FTP to your hosting (see FileZilla tutorial)
- On the server, open
public_html(orwww) - Select all files and folders from your
my-sitefolder - Drag them into
public_html - Wait for the upload to finish
index.html, css/ and img/ to public_html. Image: WordPress Developer HandbookStructure on the server
public_html/
├── index.html ← main page (opens at yourdomain.com)
├── css/style.css
├── img/logo.png
└── contact.php
Open https://yourdomain.com in your browser. If you see your page, you are live.
Common problems
Blank page or 404 error
- Confirm
index.htmlis inpublic_html(not accidentally in a subfolder) - The filename must be exactly
index.html(lowercase on Linux)
CSS not loading
- Check the path in HTML:
href="css/style.css" - Confirm the
css/folder was uploaded via FTP
PHP form does not send email
- Test that PHP is enabled in your hosting panel
- Check error logs in the panel
- Alternative: external form service without PHP
Next steps
- Install WordPress via FTP — blog and dynamic site
- Install PrestaShop — online store
- Custom domain and subdomains in the Battlehorns panel
- SSL certificate (HTTPS) — essential for trust and SEO
Hosting for your first website
Battlehorns offers hosting with PHP, databases, SSL, and FTP/SFTP access — ideal for your first web project, whether a personal page, guild site, or portfolio.
View hosting plans · My services · FTP FileZilla tutorial · Support
Tutorial adapted for Battlehorns customers. HTML, CSS, and PHP are standard web technologies.
helena805k Sep 5, 2026
“HTML” mais 100% no mesmo fôlego é muito gancho. percebo o lead, não compro que uma coisa prove a outra. falta um parágrafo ou é mesmo só isto?
catarina544N Sep 14, 2026
@helena805k i'd push back — the piece leans harder on 100% at HTML than your read suggests. that figure does more work than the opinion around it haha
ember5357W Sep 14, 2026
@catarina544N under “What you need” the 100% detail is what actually matters to me. rest reads like setup around that one figurre.
marfr774 Sep 17, 2026
@catarina544N sobre Como criar o teu próprio site — HTML, PHP e upload por FTP: o detalhe 100% é o que eu discutia, não o teu enquadramento. Tutorial passo a passo: monta um website simples em HTML (com formulário PHP opcional) e publica….
spark7612TV Sep 21, 2026
ok but 100% vs 100% in the same piece is a hell of a jump. HTML can look ievitable on paper and still be a rumor. which of those two figures do we actually trust?