Azure

App ServiceではURLの最後にスラッシュ「/」が無いとリダイレクトされてしまう。

はじめに

App Serviceの特徴の一つとしてURLの最後にスラッシュ「/」が無い場合には、リダイレクトされて勝手にスラッシュ「/」が付きます。

これはドキュメントルートの下層ディレクトリで起こります。ドキュメントルートでは起こりません。

例えば図のように https://aaa.contoso.com/bbbhttps://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を設置した場合には大きな問題として直面します。
(次回投稿予定)

まとめ

スラッシュによるリダイレクトが設定で変更は行えません。そのため、この仕様については頭の隅にでも入れとくとよいと思います。

 

-Azure
-