mirror of https://github.com/gohugoio/hugo
129 lines
3.8 KiB
Markdown
129 lines
3.8 KiB
Markdown
---
|
|
title: Configure server
|
|
linkTitle: Server
|
|
description: Configure the development server.
|
|
categories: []
|
|
keywords: []
|
|
---
|
|
|
|
These settings are exclusive to Hugo's development server, so a dedicated [configuration directory] for development, where the server is configured accordingly, is the recommended approach.
|
|
|
|
[configuration directory]: /configuration/introduction/#configuration-directory
|
|
|
|
```text
|
|
project/
|
|
└── config/
|
|
├── _default/
|
|
│ └── hugo.toml
|
|
└── development/
|
|
└── server.toml
|
|
```
|
|
|
|
## Default settings
|
|
|
|
The development server defaults to redirecting to `/404.html` for any requests to URLs that don't exist. See the [404 errors](#404-errors) section below for details.
|
|
|
|
{{< code-toggle config=server />}}
|
|
|
|
force
|
|
: (`bool`) Whether to force a redirect even if there is existing content in the path.
|
|
|
|
from
|
|
: (`string`) A [glob](g) pattern matching the requested URL. Either `from` or `fromRE` must be set. If both `from` and `fromRe` are specified, the URL must match both patterns.
|
|
|
|
fromHeaders
|
|
: {{< new-in 0.144.0 />}}
|
|
: (`map[string][string]`) Headers to match for the redirect. This maps the HTTP header name to a [glob](g) pattern with values to match. If the map is empty, the redirect will always be triggered.
|
|
|
|
fromRe
|
|
: {{< new-in 0.144.0 />}}
|
|
: (`string`) A [regular expression](g) used to match the requested URL. Either `from` or `fromRE` must be set. If both `from` and `fromRe` are specified, the URL must match both patterns. Capture groups from the regular expression are accessible in the `to` field as `$1`, `$2`, and so on.
|
|
|
|
status
|
|
: (`string`) The HTTP status code to use for the redirect. A status code of 200 will trigger a URL rewrite.
|
|
|
|
to
|
|
: (`string`) The URL to forward the request to.
|
|
|
|
## Headers
|
|
|
|
Include headers in every server response to facilitate testing, particularly for features like Content Security Policies.
|
|
|
|
[Content Security Policies]: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
|
|
|
|
{{< code-toggle file=config/development/server >}}
|
|
[[headers]]
|
|
for = "/**"
|
|
|
|
[headers.values]
|
|
X-Frame-Options = "DENY"
|
|
X-XSS-Protection = "1; mode=block"
|
|
X-Content-Type-Options = "nosniff"
|
|
Referrer-Policy = "strict-origin-when-cross-origin"
|
|
Content-Security-Policy = "script-src localhost:1313"
|
|
{{< /code-toggle >}}
|
|
|
|
## Redirects
|
|
|
|
You can define simple redirect rules.
|
|
|
|
{{< code-toggle file=config/development/server >}}
|
|
[[redirects]]
|
|
from = "/myspa/**"
|
|
to = "/myspa/"
|
|
status = 200
|
|
force = false
|
|
{{< /code-toggle >}}
|
|
|
|
The `200` status code in this example triggers a URL rewrite, which is typically the desired behavior for [single-page applications].
|
|
|
|
[single-page applications]: https://en.wikipedia.org/wiki/Single-page_application
|
|
|
|
## 404 errors
|
|
|
|
The development server defaults to redirecting to /404.html for any requests to URLs that don't exist.
|
|
|
|
{{< code-toggle config=server />}}
|
|
|
|
If you've already defined other redirects, you must explicitly add the 404 redirect.
|
|
|
|
{{< code-toggle file=config/development/server >}}
|
|
[[redirects]]
|
|
force = false
|
|
from = "/**"
|
|
to = "/404.html"
|
|
status = 404
|
|
{{< /code-toggle >}}
|
|
|
|
For multilingual sites, ensure the default language 404 redirect is defined last:
|
|
|
|
{{< code-toggle file=config/development/server >}}
|
|
defaultContentLanguage = 'en'
|
|
defaultContentLanguageInSubdir = false
|
|
[[redirects]]
|
|
from = '/fr/**'
|
|
to = '/fr/404.html'
|
|
status = 404
|
|
|
|
[[redirects]] # Default language must be last.
|
|
from = '/**'
|
|
to = '/404.html'
|
|
status = 404
|
|
{{< /code-toggle >}}
|
|
|
|
When the default language is served from a subdirectory:
|
|
|
|
{{< code-toggle file=config/development/server >}}
|
|
defaultContentLanguage = 'en'
|
|
defaultContentLanguageInSubdir = true
|
|
[[redirects]]
|
|
from = '/fr/**'
|
|
to = '/fr/404.html'
|
|
status = 404
|
|
|
|
[[redirects]] # Default language must be last.
|
|
from = '/**'
|
|
to = '/en/404.html'
|
|
status = 404
|
|
{{< /code-toggle >}}
|