tencent cloud

Tencent Cloud EdgeOne

正規表現ベースのURL書き換え

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-15 18:25:50
AI翻訳
この例では、受信した HTTP リクエストをキャプチャし、URL パスに基づいて正規表現でマッチングを行い、特定の内容にマッチした場合に URL を書き換えて index.html ページにアクセスします。指定ディレクトリ配下の任意のリクエストをホームページ(通常は index.html)へのアクセスに統一して書き換えることで、フロントエンドルーティングを通じて異なるページリクエストを処理するために使用できます。

サンプルコード

async function handleEvent(event) {
const { request } = event;
const urlInfo = new URL(request.url);
// 正規表現で/test/の後にスラッシュ以外のパスセグメントが1つまたは2つ続くパターンにマッチします。
const regexp = /^\\/test\\/([^\\/]+)(?:\\/([^\\/]+))?\\/?$/;
// パスが正規表現に一致するかどうかを確認します。
if (regexp.test(urlInfo.pathname)) {
const matches = urlInfo.pathname.match(regexp);
let newPathname = '/test/';
// マッチしたパスセグメントの数に応じて、新しいパス名を1つまたは2つ構築します。
newPathname += matches[1]; // 最初のパスセグメント
if (matches[2]) {
newPathname += '/' + matches[2]; // 2番目のパスセグメント(存在する場合)
}
// 末尾がindex.htmlであることを確認します。
newPathname += '/index.html';
// URLInfoのpathnameを更新します。
urlInfo.pathname = newPathname;
}
// 更新されたURLInfoを使用してリクエストを送信します。
const response = await fetch(urlInfo.toString(), {
method: request.method,
headers: request.headers,
redirect: 'manual',
body: request.body,
});
// レスポンスをイベントに返します。
return event.respondWith(response);
}

// 各fetchイベントに対してhandleEvent関数を呼び出します。
addEventListener('fetch', (event) => {
handleEvent(event);
});

サンプルプレビュー

1. ブラウザのアドレスバーにエッジ関数のトリガールールに一致するURLを入力し、パスに /test/segment1 を含めることで、https://www.example.com/test/segment1/index.html へのアクセスを動的に書き換えます。



2. ブラウザのアドレスバーにエッジ関数のトリガールールに一致するURLを入力し、パスに /test/segment1/segment2 を含めることで、https://www.example.com/test/segment1/segment2/index.html へのアクセスを動的に書き換えます。



3. ブラウザのアドレスバーにエッジ関数のトリガールールに一致するURLを入力し、パスに非正規表現の一致内容を含めます。例えば:/test/test1




関連参考




ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック