WebサーバにIISを使用した環境において、システム管理者画面(system/login)にアクセスすると、画像などが読み込めずに崩れている。
こんな感じ。
こういう場合、静的ファイルが配置できてないとか、設定の向き先が間違えていることが多いのだが、一般ユーザ(/login)の画面については問題ないしログインもできる。
静的ファイルがなぜ読み込めてないかというと、Chromeの開発者ツールで確認する限り、ポート番号8080のアドレスにある静的ファイルを見に行こうとしている。
つまり、IISにて静的ファイルを関連付けるルールよりも先に、Resin(8080)へURL書き換えするルールが優先されてしまっている。
しかし、一般ユーザはログインできるわけだから設定に誤りがあるわけではない。imart/loginと、imart/system/loginで何かが異なるのか。
久しぶりにハマった。原因は何なのか。
解決方法
原因はベースURLにあった。
server-context-config.xmlのベースURLがコメントアウトされていたが、指定することで正常に画面表示された。
システム管理画面についてはserver-context-config.xmlにあるベースURLを見る仕様のようで、これを定義していないとURLが正しいものにならないようだ。
今回はバーチャルテナント環境で2つテナントを構築しており、ベースURLはテナント毎に設定していたからserver-context-config.xmlは未指定で大丈夫と思ったものの、システム管理者画面については影響があるので注意されたし。