URLの正規化設定 や Redirect Rules を利用してRFC非準拠URLのリクエストを正しいものとして処理する方法
Cloudflareでは様々なURLの変換やユーザーからリクエストされる不正なURLを正しいものに(正規化)する機能が提供されています。
例えば、印刷物で間違ったURLで印刷してしまった!つなぎこんでくるWebサイトの仕様で/
が重複してくる、もしくは/
が正しく付与されない。サイトを大型更新して一括で特定ディレクトリへのアクセスをリダイレクトさせたい、等です。
さっそくやってみる
この記事では//test.html
としてアクセスしてくるユーザーを/test.html
へ誘導させていきます。
パターン1
一番簡単なのはRules
→Settings
で全体的に設定を反映させる方法です。
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
として処理されるため正しく動作しないためです。
Rules
→Redirect Rules
をクリックします。
Create rule
をクリックし以下のようにルールを投入します。
Deploy
ボタンを押した後アクセスすると以下のようにHTTP スタータスコード301でアクセスがされていることがわかります。
Discussion