はじめに
App Serviceの特徴の一つとしてURLの最後にスラッシュ「/」が無い場合には、リダイレクトされて勝手にスラッシュ「/」が付きます。
これはドキュメントルートの下層ディレクトリで起こります。ドキュメントルートでは起こりません。
例えば図のように https://aaa.contoso.com/bbb
→ https://aaa.contoso.com/bbb/
のようにリダイレクトされます。
最初は何故リダイレクトされているのか全く分からなかったです。
このことについて言及しているドキュメントが無いんですよね。見つからないだけかもしれませんが。
CURLでヘッダーを確認してみると
ドキュメントルート
curl -I https://appsv000001.azurewebsites.net HTTP/1.1 200 OK Content-Length: 3499 Content-Type: text/html Last-Modified: Sat, 25 Dec 2021 07:44:12 GMT Accept-Ranges: bytes ETag: "4b20673563f9d71:0" Server: Microsoft-IIS/10.0 X-Powered-By: ASP.NET Set-Cookie: ARRAffinity=4c11587e94349dd42c6fc02464b867022d6138c72620787a410e416b3ae10e84;Path=/;HttpOnly;Secure;Domain=appsv000001.azurewebsites.net Set-Cookie: ARRAffinitySameSite=4c11587e94349dd42c6fc02464b867022d6138c72620787a410e416b3ae10e84;Path=/;HttpOnly;SameSite=None;Secure;Domain=appsv000001.azurewebsites.net Date: Sun, 26 Dec 2021 07:11:47 GMT
下層ディレクトリ
curl -I https://appsv000001.azurewebsites.net/bbb HTTP/1.1 301 Moved Permanently Content-Length: 165 Content-Type: text/html; charset=UTF-8 Location: https://appsv000001.azurewebsites.net/bbb/ Server: Microsoft-IIS/10.0 X-Powered-By: ASP.NET Set-Cookie: ARRAffinity=4c11587e94349dd42c6fc02464b867022d6138c72620787a410e416b3ae10e84;Path=/;HttpOnly;Secure;Domain=appsv000001.azurewebsites.net Set-Cookie: ARRAffinitySameSite=4c11587e94349dd42c6fc02464b867022d6138c72620787a410e416b3ae10e84;Path=/;HttpOnly;SameSite=None;Secure;Domain=appsv000001.azurewebsites.net Date: Sun, 26 Dec 2021 07:13:44 GMT
発生する問題
通常単一のホームページなどの運用で利用されている場合には問題にはなりません。これはカスタムドメインを利用した場合でも影響されません。
ただしリダイレクトされることで問題になるケースがあります。
- コネクションが2倍になることで正しく監視できなくなる。
- 3xxが大量に記録される。
- アプリケーションが正しく動作しない。
- Application Gatewayを前に設置しドメインを設定した場合
これは、App Serviceの前にApplication Gatewayを設置した場合には大きな問題として直面します。
(次回投稿予定)
まとめ
スラッシュによるリダイレクトが設定で変更は行えません。そのため、この仕様については頭の隅にでも入れとくとよいと思います。