👌

URLの正規化設定 や Redirect Rules を利用してRFC非準拠URLのリクエストを正しいものとして処理する方法

2024/03/26に公開

Cloudflareでは様々なURLの変換やユーザーからリクエストされる不正なURLを正しいものに(正規化)する機能が提供されています。

例えば、印刷物で間違ったURLで印刷してしまった!つなぎこんでくるWebサイトの仕様で/が重複してくる、もしくは/が正しく付与されない。サイトを大型更新して一括で特定ディレクトリへのアクセスをリダイレクトさせたい、等です。

さっそくやってみる

この記事では//test.htmlとしてアクセスしてくるユーザーを/test.htmlへ誘導させていきます。

パターン1

一番簡単なのはRulesSettingsで全体的に設定を反映させる方法です。

Normalization incoming URLsのトグルをオンにします。

これだけでアクセスが可能となるケースがあります。例えば
https:://<domain>//test.html
とアクセスされたものがCloudflare内部では
https:://<domain>/test.html
として認識されます。ただしOriginへの処理は//test.htmlとして行われます。Origin側でエラーとなる場合はさらに以下のトグルをオンにします。

パターン2

Originの設定次第では上記では動作しないケースがあります。その場合Redirect Rulesという機能を用います。まずパターン1で設定したスイッチを両方オフにします。そうしないとCloudflare内部では//test.htmlへのアクセスが/test.htmlとして処理されるため正しく動作しないためです。

RulesRedirect Rulesをクリックします。

Create ruleをクリックし以下のようにルールを投入します。


Deployボタンを押した後アクセスすると以下のようにHTTP スタータスコード301でアクセスがされていることがわかります。

Discussion