

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# サンプルリファレンスをリダイレクトして書き換える
<a name="redirect-rewrite-examples"></a>

このセクションでは、一般的なリダイレクトのさまざまな例について説明します。

**重要**  
ドメイン固有のリダイレクトは、ソースフィールドのパスコンポーネントをサポートしていません。  
**サポートされている**:  
`"source": "https://example.com" `(パスは自動的に追加されます)
**サポートされていない**:  
`"source": "https://example.com/specific-path"`
`domain+path` の組み合わせのルールは現在サポートされていません。
**代替パターン**  
 ドメイン固有のパスリダイレクトには、次を使用します。  
ドメインのみのルールを分離する (パスは自動的に追加されます)
条件付きロジックを使用したパスのみのルール
複数のルールの組み合わせ

これらの例を使用すれば、Amplify コンソール JSON エディタで独自のリダイレクトと書き換えを作成するための JSON 構文を理解できるようになります。

**注記**  
元のアドレスのドメイン照合では、大文字と小文字は区別されません。

**Topics**
+ [シンプルなリダイレクトと書き換え](#simple-redirects-and-rewrites)
+ [単一ページのウェブアプリケーション (SPA) のリダイレクト](#redirects-for-single-page-web-apps-spa)
+ [リバースプロキシの書き換え](#reverse-proxy-rewrite)
+ [末尾のスラッシュとクリーン URL](#trailing-slashes-and-clean-urls)
+ [プレースホルダー](#placeholders)
+ [クエリ文字列とパスパラメータ](#query-strings-and-path-parameters)
+ [リージョンベースのリダイレクト](#region-based-redirects)
+ [リダイレクトと書き換えでのワイルドカード式の使用](#wildcard-redirects)

## シンプルなリダイレクトと書き換え
<a name="simple-redirects-and-rewrites"></a>

次の例を使用して、特定のページを新しいアドレスに恒久的にリダイレクトすることができます。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `/original.html`  |  `/destination.html`  |  `permanent redirect (301)`  |  | 

JSON 形式

```
[
  {
    "source": "/original.html", 
    "status": "301", 
    "target": "/destination.html", 
    "condition": null
  }
]
```

次の例を使用して、フォルダ内の任意のパスを別のフォルダ内の同じパスにリダイレクトできます。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `/docs/<*>`  |  `/documents/<*>`  |  `permanent redirect (301)`  |  | 

JSON 形式

```
[
  {
    "source": "/docs/<*>", 
    "status": "301", 
    "target": "/documents/<*>", 
    "condition": null
  }
]
```

次の例を使用して、書き換えとしてすべてのトラフィックを index.html にリダイレクトすることができます。このシナリオでは、書き換えによって元のアドレスに到達したようにユーザーに表示されます。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `/<*>`  |  `/index.html`  |  `rewrite (200)`  |  | 

JSON 形式

```
[
  {
    "source": "/<*>", 
    "status": "200", 
    "target": "/index.html", 
    "condition": null
  }
]
```

次の例を使用して、書き換えによって、ユーザーに表示されるサブドメインを変更することができます。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `https://mydomain.com`  |  `https://www.mydomain.com`  |  `rewrite (200)`  |  | 

JSON 形式

```
[
  {
    "source": "https://mydomain.com", 
    "status": "200", "target": "https://www.mydomain.com", 
    "condition": null
  }
]
```

次の例を使用して、パスプレフィックスを付けた別のドメインにリダイレクトできます。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `https://mydomain.com`  |  `https://www.mydomain.com/documents`  |  `temporary redirect (302)`  |  | 

JSON 形式

```
[
  {
    "source": "https://mydomain.com",
    "status": "302",
    "target": "https://www.mydomain.com/documents/",
    "condition": null
  }
]
```

次の例を使用して、見つからないフォルダのパスをカスタムの 404 ページにリダイレクトすることができます。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `/<*>`  |  `/404.html`  |  `not found (404)`  |  | 

JSON 形式

```
[
  {
    "source": "/<*>",
    "status": "404",
    "target": "/404.html",
    "condition": null
  }
]
```

**重要**  
ドメインベースのソースルール (`"https://domain.com/path"` など) のパスコンポーネントはサポートされていないため、ルールはエラーなしで無視されます。

## 単一ページのウェブアプリケーション (SPA) のリダイレクト
<a name="redirects-for-single-page-web-apps-spa"></a>

大抵の SPA フレームワークは、HTML5 history.pushState() をサポートしており、サーバーリクエストを行わなくても、ブラウザの場所を変更できます。この方法は、ユーザーがルート (または */index.html*) から作業を開始する問題ありませんが、他のページに直接ナビゲートする場合は失敗します。

次の例では、正規表現を使用して、正規表現で指定されている特定のファイル拡張子を除き、すべてのファイルをindex.html に200回書き換えるように設定します。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `</^[^.]+$\|\.(?!(css\|gif\|ico\|jpg\|js\|png\|txt\|svg\|woff\|woff2\|ttf\|map\|json\|webp)$)([^.]+$)/>`  |  `/index.html`  |  `200`  |  | 

JSON 形式

```
[
  {
    "source": "</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|woff2|ttf|map|json|webp)$)([^.]+$)/>",
    "status": "200", 
    "target": "/index.html", 
    "condition": null
  }
]
```

## リバースプロキシの書き換え
<a name="reverse-proxy-rewrite"></a>

次の例では、ドメインが変更されていないように見えるように、別の場所からプロキシコンテンツへの書き換えを使用しています。HTTPS は、リバースプロキシでサポートされている唯一のプロトコルです。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `/images/<*>`  |  `https://images.otherdomain.com/<*>`  |  `rewrite (200)`  |  | 

JSON 形式

```
[
  {
    "source": "/images/<*>", 
    "status": "200", 
    "target": "https://images.otherdomain.com/<*>", 
    "condition": null
  }
]
```

## 末尾のスラッシュとクリーン URL
<a name="trailing-slashes-and-clean-urls"></a>

*about.html*の代わりに*about*のようなきれいな URL 構造を作成するために、Hugo などの静的サイトジェネレーターは index.html (*/about/index.html*) を含むページのディレクトリを生成します。Amplify では、必要に応じて末尾のスラッシュを追加することによって、クリーン URL を自動的に作成します。以下の表は、さまざまなシナリオをまとめたものです。


****  

| ブラウザでのユーザー入力 | アドレスバーの URL | 提供されたドキュメント | 
| --- | --- | --- | 
|  `/about`  |  `/about`  |  `/about.html`  | 
|  `/about (when about.html returns 404)`  |  `/about/`  |  `/about/index.html`  | 
|  `/about/`  |  `/about/`  |  `/about/index.html`  | 

## プレースホルダー
<a name="placeholders"></a>

次の例を使用して、フォルダ構造内のパスを別のフォルダ内の一致する構造にリダイレクトすることができます。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `/docs/<year>/<month>/<date>/<itemid>`  |  `/documents/<year>/<month>/<date>/<itemid>`  |  `permanent redirect (301)`  |  | 

JSON 形式

```
[
  {
    "source":  "/docs/<year>/<month>/<date>/<itemid>", 
    "status": "301",
    "target": "/documents/<year>/<month>/<date>/<itemid>",
               "condition": null
   }
]
```

## クエリ文字列とパスパラメータ
<a name="query-strings-and-path-parameters"></a>

**警告**  
シークレット、認証情報、または機密データをパスまたはクエリパラメータとして URL に含めないでください。これらの値は、Amplify アプリケーションのアクセスログでプレーンテキストで表示できます。

次の例を使用して、元のアドレスのクエリ文字列要素の値と一致する名前のパスをフォルダにリダイレクトできます。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `/docs?id=<my-blog-id-value`  |  `/documents/<my-blog-post-id-value>`  |  `permanent redirect (301)`  |  | 

JSON 形式

```
[
  {
    "source": "/docs?id=<my-blog-id-value>", 
    "status": "301",
    "target": "/documents/<my-blog-id-value>", 
    "condition": null
  }
]
```

**注記**  
Amplify は、すべてのクエリ文字列パラメータを 301 および 302 リダイレクトの宛先パスに転送します。ただし、この例のように、元のアドレスに特定の値に設定されたクエリ文字列が含まれている場合、Amplify はクエリパラメータを転送しません。この場合、リダイレクトは指定されたクエリ値`id`を持つ宛先アドレスへのリクエストにのみ適用されます。

次の例を使用して、特定レベルのフォルダ構造で見つからないパスをすべて、指定フォルダ内の index.html にリダイレクトすることができます。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `/documents/<folder>/<child-folder>/<grand-child-folder>`  |  `/documents/index.html`  |  `not found (404)`  |  | 

JSON 形式

```
[
  {
    "source": "/documents/<x>/<y>/<z>", 
    "status": "404", 
    "target": "/documents/index.html", 
    "condition": null
  }
]
```

## リージョンベースのリダイレクト
<a name="region-based-redirects"></a>

次の例を使用して、リージョンに基づきリクエストをリダイレクトできます。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `/documents`  |  `/documents/us/`  |  `temporary redirect (302)`  |  `<US>`  | 

JSON 形式

```
[
  {
    "source": "/documents", 
    "status": "302", 
    "target": "/documents/us/", 
    "condition": "<US>"
  }
]
```

## リダイレクトと書き換えでのワイルドカード式の使用
<a name="wildcard-redirects"></a>

ワイルドカード式の `<*>` は、リダイレクトまたは書き換えの元のアドレスで使用できます。この式は元のアドレスの末尾に配置し、一意である必要があります。Amplify は、複数のワイルドカード式を含む元のアドレスを無視するか、異なる配置で使用します。

以下は、ワイルドカード式を使用した有効なリダイレクトの例です。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `/docs/<*>`  |  `/documents/<*>`  |  `permanent redirect (301)`  |   | 

次の 2 つ例は、ワイルドカード式による *無効な* リダイレクトです。


****  

| 元のアドレス | 送信先アドレス | リダイレクトの種類 | 国コード | 
| --- | --- | --- | --- | 
|  `/docs/<*>/content`  |  `/documents/<*>/content`  |  `permanent redirect (301)`  |   | 
|  `/docs/<*>/content/<*>`  |  `/documents/<*>/content/<*>`  |  `permanent redirect (301)`  |   | 