> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# スタティックデプロイメントの設定

> スタティックデプロイメントのHTTPヘッダー、ルーティングルール、URLリライトを設定する方法を学びます。

このガイドでは、以下のWebサーバーレベルの設定について説明します:

* [レスポンスヘッダーを追加する](#add-response-headers)
* [カスタム404ページを作成する](#create-a-custom-404-page)
* [URLパスのリライトを定義する](#define-url-path-rewrites)

## レスポンスヘッダーを追加する

カスタムの**レスポンスヘッダー**を使うと、特定のパスに一致するリクエストにHTTPヘッダーの指示を追加できます。
レスポンスヘッダーとは、リクエストされたコンテンツにどのように対応するかをブラウザに指示する、名前と値のペアです。

例えば、`Access-Control-Allow-Origin` ヘッダーを指定して、そのページに対してブラウザがアクセスを許可するドメインを指定できます。
このエントリを作成するには、Replit Appのルートディレクトリにある `.replit` ファイルに以下を追加します:

```
[[deployment.responseHeaders]]
path = "/*"
name = "Access-Control-Allow-Origin"
value = "origin"
```

このレスポンスヘッダーには、以下のパラメーターが含まれます:

* **path**: リクエストされたリソースに一致するURLパスパターン
* **name**: HTTPヘッダー名
* **value**: HTTPヘッダーの値

`.replit` ファイルには、複数の `deployment.responseHeaders` エントリを追加できます。

設定の更新を適用するには、Replit Appを再公開してください。

#### 予約済みヘッダー

Replitは以下のHTTPヘッダーを予約しており、これらを設定することはできません。

```text [expandable] theme={null}
Accept-Ranges
Age
Allow
Alt-Svc
Connection
Content-Encoding
Content-Length
Content-Range
Date
Location
Server
Set-Cookie
Trailer
Transfer-Encoding
Upgrade
```

<Tip>
  HTTPヘッダーについて詳しくは、MDN Webドキュメントの

  <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers" target="_blank">
    HTTPヘッダー
  </a>

  をご覧ください。
</Tip>

## カスタム404ページを作成する

カスタム404ページは、公開済みアプリ内のどのファイルやルールにも一致しないURLパスをユーザーがリクエストしたときに表示されます。

カスタム404ページを追加するには、Replit Appのルートディレクトリに `404.html` という名前のファイルを作成し、そこにページの内容を記述します。

ユーザーが存在しないURLパスにアクセスしようとすると、カスタム404ページのレンダリング済みHTMLが表示されます。

## URLパスのリライトを定義する

URLリライトを定義すると、Replit Appがリクエストを処理する前にそのURLパスを変更できます。
元のURLはブラウザ上では変わらずに表示されますが、サーバーはリライトルールで定義されたリソースを読み込みます。

例えば、`/app` で始まるすべてのリクエストが `/app/index.html` ファイルの内容を読み込むように指定できます。
このエントリを作成するには、Replit Appのルートディレクトリにある `.replit` ファイルに以下を追加します:

```
[[deployment.rewrites]]
from = "/app/*"
to = "/app/index.html"
```

* **from**: リクエストされたリソースに一致するURLパスパターン
* **to**: リライト後のパス。スタティックデプロイメント内のファイルに対応します。

`.replit` ファイルには、複数の `deployment.rewrites` エントリを追加できます。
サーバーはエントリを記載されている順に解釈し、重複するものは無視します。

設定の更新を適用するには、Replit Appを再公開する必要があります。

以下のセクションでは、URLリライトルールの制約について説明します。

### パスのマッチング

リライトルールの `from` パラメーターと `to` パラメーターには、以下の制約が適用されます:

* `*` がない限り、マッチは完全一致でなければなりません
* `*` はパスの残りの部分にマッチします
* `*` はパスの末尾でのみ有効です
* `from` パラメーターに `*` を含める場合、`to` パラメーターにも含めることで、マッチしたパスの部分を表すことができます

例えば、`.replit` ファイルに以下のリライトが含まれているとします:

```
[[deployment.rewrites]]
from = "/v1/*"
to = "/v2/*"
```

ユーザーが `/v1/about-us.html` にアクセスすると、リライトによって `/v2/about-us.html` にあるファイルが配信されます。

### シャドウイング

シャドウイングとは、リライトがスタティックデプロイメント内のファイルにも一致するURLパスにマッチした場合に発生する現象です。
この場合、クラウドサーバーはリライトを無視し、ファイルを直接配信します。

例えば、公開済みアプリに以下のファイルが含まれているとします:

* `index.html`
* `about.html`

`.replit` ファイルには以下のリライトが含まれています:

```
[[deployment.rewrites]]
from = "/*"
to = "/index.html"
```

ユーザーが `/register.html` にアクセスすると、サーバーはリクエストを `/index.html` にリライトし、そのファイルを配信します。
しかし、ユーザーが `/about.html` にアクセスした場合は、そのファイルがスタティックデプロイメント内に存在するため、サーバーはリライトを無視して `about.html` ファイルを配信します。

### ドメインの制限

リライトは、スタティックデプロイメントのプライマリドメインへのリクエストに対してのみ機能し、
スタティックデプロイメント内のファイルへのみリダイレクトできます。
