Add support for extensionless pages URLs

This commit is contained in:
Nick Thomas 2019-02-01 19:32:08 +00:00
parent 3a042391ae
commit 618774154b
No known key found for this signature in database
GPG key ID: 2A313A47AFADACE9
3 changed files with 57 additions and 1 deletions

View file

@ -1 +1 @@
1.4.0
1.5.0

View file

@ -0,0 +1,5 @@
---
title: Add support for extensionless pages URLs
merge_request: 24876
author:
type: added

View file

@ -356,6 +356,57 @@ By pre-compressing the files and including both versions in the artifact, Pages
can serve requests for both compressed and uncompressed content without
needing to compress files on-demand.
### Resolving ambiguous URLs
> [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/issues/95) in GitLab 11.8
GitLab Pages makes assumptions about which files to serve when receiving a
request for a URL that does not include an extension.
Consider a Pages site deployed with the following files:
```
public/
├─┬ index.html
│ ├ data.html
│ └ info.html
├── data/
│ └── index.html
├── info/
│ └── details.html
└── other/
└── index.html
```
Pages supports reaching each of these files through several different URLs. In
particular, it will always look for an `index.html` file if the URL only
specifies the directory. If the URL references a file that doesn't exist, but
adding `.html` to the URL leads to a file that *does* exist, it will be served
instead. Here are some examples of what will happen given the above Pages site:
| URL path | HTTP response | File served |
| -------------------- | ------------- | ----------- |
| `/` | `200 OK` | `public/index.html` |
| `/index.html` | `200 OK` | `public/index.html` |
| `/index` | `200 OK` | `public/index.html` |
| `/data` | `200 OK` | `public/data/index.html` |
| `/data/` | `200 OK` | `public/data/index.html` |
| `/data.html` | `200 OK` | `public/data.html` |
| `/info` | `200 OK` | `public/info.html` |
| `/info/` | `200 OK` | `public/info.html` |
| `/info.html` | `200 OK` | `public/info.html` |
| `/info/details` | `200 OK` | `public/info/details.html` |
| `/info/details.html` | `200 OK` | `public/info/details.html` |
| `/other` | `302 Found` | `public/other/index.html` |
| `/other/` | `200 OK` | `public/other/index.html` |
| `/other/index` | `200 OK` | `public/other/index.html` |
| `/other/index.html` | `200 OK` | `public/other/index.html` |
NOTE: **Note:**
When `public/data/index.html` exists, it takes priority over the `public/data.html`
file for both the `/data` and `/data/` URL paths.
### Add a custom domain to your Pages website
For a complete guide on Pages domains, read through the article