You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description: What the _redirect file is and how to use them with a website on IPFS.
4
4
---
5
-
#`_redirects` file support
5
+
## Redirects file support
6
6
7
-
The `_redirects` file provides support for URL redirects and rewrites for websites hosted on Subdomain or DNSLink gateways. This feature enables support for single-page applications, progressive web applications, custom 404 pages, and avoids link rot when moving to IPFS-backed hosting. As well as the ability to change the appearance of a URL, change where content is located without breaking existing links, and enable URL rewriting.
7
+
The `_redirects` file provides support for URL redirects and rewrites for websites hosted on subdomain or DNSLink gateways. This feature enables support for single-page applications, progressive web applications, custom 404 pages, and avoids link rot when moving to IPFS-backed hosting. On top of that, it also provides the ability to change the appearance of a URL, change where content is located without breaking existing links, and enable URL rewriting.
8
8
9
9
This `_redirects` implementaion is a subset of pre-existing standards supported by [Cloudflare](https://developers.cloudflare.com/pages/platform/redirects) and [Netlify](https://docs.netlify.com/routing/redirects/).
10
10
11
11
For more detailed information, check out the [`_redirects` file support specs](https://github.com/ipfs/specs/blob/main/http-gateways/REDIRECTS_FILE.md).
12
12
13
-
# Supported HTTP status codes
13
+
##Supported HTTP status codes
14
14
15
-
*`200` - OK (redirect will be treated as a rewrite, returning OK without changing the URL shown in the browser).
16
-
*`301` - Permanent redirect (the default status).
17
-
*`302` - Found (commonly used for temporary redirects).
18
-
*`404` - Not found (can be used redirect to custom 404 pages).
19
-
*`410` - Gone (the requested content has been permanently removed).
20
-
*`451` - Unavailable for legal reasons.
15
+
-`200` - OK (redirect will be treated as a rewrite, returning OK without changing the URL shown in the browser).
16
+
-`301` - Permanent redirect (the default status).
17
+
-`302` - Found (commonly used for temporary redirects).
18
+
-`404` - Not found (can be used redirect to custom 404 pages).
19
+
-`410` - Gone (the requested content has been permanently removed).
20
+
-`451` - Unavailable for legal reasons.
21
21
22
-
# How to set up the `_redirects` file
22
+
##How to set up the `_redirects` file
23
23
24
24
To use the `_redirects` file, there must be a file named `_redirects` stored underneath the root CID of the website. This `_redirects` file must be a text file containing one or more lines that follow the format explained below.
25
25
26
-
## Format of the `_redirects` file
26
+
###Format of the `_redirects` file
27
27
28
28
Each line contained within the `_redirects` file has 3 basic components:
29
29
30
-
1. The `from` path, this specifies the path to be redirected from.
31
-
1. The `to` path, this specifies the path to be redirected to.
32
-
1. The `status` component, this part is optional and specifies the HTTP status code that will be returned. (301, 404, etc.)
30
+
1. The `from` path. This specifies the path to be redirected from.
31
+
1. The `to` path. This specifies the path to be redirected to.
32
+
1. The `status` component. This part is optional and specifies the HTTP status code that will be returned. (301, 404, etc.)
33
33
34
-
For example, if for whatever reason I wanted to temporarily redirect traffic from my home page to my index page, the `_redirects` file will contain a line that looks something like this:
34
+
For example, if you want to temporarily redirect traffic from your home page to your index page, the `_redirects` file should contain a line that looks something like this:
35
35
36
36
```
37
37
/home /index.html 302 \n
38
38
```
39
39
40
40
The same format is used for all redirects.
41
41
42
-
# Examples
42
+
##Examples
43
43
44
-
## Catch all and PWA/SPA support
44
+
###Catch all and PWA/SPA support
45
45
46
46
The `200` status will be treated as a rewrite, returning OK without changing the URL shown in the browser. This staus code can be used to build [Progressive Web Apps](https://en.wikipedia.org/wiki/Progressive_web_app) and [Single Page Applications](https://en.wikipedia.org/wiki/Single-page_application).
47
47
48
48
```
49
49
/home /index.html 200 \n
50
50
```
51
51
52
-
## Redirect an old URL to a new place
52
+
###Redirect an old URL to a new place
53
53
54
54
The `301` status is a permanent redirect, this is the default status code used when no others are spcified.
55
55
@@ -63,15 +63,15 @@ The `302` status is commonly used for temporary redirects.
63
63
/home /under-construction.html 302 \n
64
64
```
65
65
66
-
## Add a custom 404 page to your website
66
+
###Add a custom 404 page to your website
67
67
68
68
Use the `_redirects` file support to add a custom 404 page to your website.
69
69
70
70
```
71
71
/home /custom-404.html 404 \n
72
72
```
73
73
74
-
## Placeholders
74
+
###Placeholders
75
75
76
76
Placeholders are named variables that can be used to match path segments in the `from` path and inject them into the `to` path.
77
77
@@ -83,14 +83,14 @@ For example, if I wanted to search for an article titled "hello world" that was
The `_redirects` file is only supported on subdomain and DNSLink gateways, which provides [unique origin per root CID](https://en.wikipedia.org/wiki/Same-origin_policy).
89
89
90
-
## No forced redirects
90
+
###No forced redirects
91
91
92
92
Redirect logic will only be evaluated if the requested path is not in the DAG. Any performance impact associated with checking for the existence of a `_redirects` file or evaluating redirect rules will only be incurred for non-existent paths.
93
93
94
-
# Error handling
94
+
##Error handling
95
95
96
96
If there are any errors reading or parsing the `_redirects` file, the error codes will be returned with an HTTP 500 status code.
0 commit comments