--- title: Custom 404 Page linktitle: 404 Page description: If you know how to create a single page template, you have unlimited options for creating a custom 404. date: 2017-02-01 publishdate: 2017-02-01 lastmod: 2017-03-31 categories: [templates] keywords: [404, page not found] menu: docs: parent: "templates" weight: 120 weight: 120 #rem draft: false aliases: [/templates/404/] toc: false --- When using Hugo with [GitHub Pages](http://pages.github.com/), you can provide your own template for a [custom 404 error page](https://help.github.com/articles/custom-404-pages/) by creating a 404.html template file in your `/layouts` folder. When Hugo generates your site, the `404.html` file will be placed in the root. 404 pages will have all the regular [page variables][pagevars] available to use in the templates. In addition to the standard page variables, the 404 page has access to all site content accessible from `.Data.Pages`. ``` ▾ layouts/ 404.html ``` ## 404.html This is a basic example of a 404.html template: {{< code file="layouts/404.html" download="404.html" >}} {{ define "main"}}

Go Home

{{ end }} {{< /code >}} ## Automatic Loading Your 404.html file can be set to load automatically when a visitor enters a mistaken URL path, dependent upon the web serving environment you are using. For example: * [GitHub Pages](/hosting-and-deployment/hosting-on-github/). The 404 page is automatic. * Apache. You can specify `ErrorDocument 404 /404.html` in an `.htaccess` file in the root of your site. * Nginx. You might specify `error_page 404 /404.html;` in your `nginx.conf` file. * Amazon AWS S3. When setting a bucket up for static web serving, you can specify the error file from within the S3 GUI. * Caddy Server. Using `errors { 404 /404.html }`. [Details here](https://caddyserver.com/docs/errors) [pagevars]: /variables/page/