> ## 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.

# Static Deploymentの設定

> Static Deploymentのレスポンスヘッダー、ルーティングルール、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**: リライト後のパス。Static Deployment内のファイルに対応します。

`.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` にあるファイルが配信されます。

### シャドウイング

シャドウイングは、リライトがStatic Deployment内のファイルにも一致するURLパスとマッチした場合に発生します。
この場合、クラウドサーバーはリライトを無視してファイルを直接配信します。

例えば、パブリッシュ済みアプリに以下のファイルが含まれているとします：

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

`.replit` ファイルに以下のリライトが含まれている場合：

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

ユーザーが `/register.html` にアクセスすると、サーバーはリクエストを `/index.html` にリライトしてそのファイルを配信します。
ただし、ユーザーが `/about.html` にアクセスした場合、サーバーはリライトを無視し、Static Deploymentに存在するため `about.html` ファイルを配信します。

### ドメインの制限

リライトはStatic Deploymentのプライマリドメインへのリクエストにのみ機能し、
Static Deployment内のファイルにのみリダイレクトできます。
