Modxで運用するサイトであるサブフォルダーだけアクセスできない。ManagerからはFile Treeで見ることができるのだが、フォルダーの中のイメージファイルの画像をレンダリングしない。 フロントエンドから見ると、イメージファイルの部分でサーバーエラーになっているようだ。
web.configでエラー出力をONにしてみると、エラー500で以下を表示した。
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: It is an error to use a section registered as allowDefinition=’MachineToApplication’ beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.
Source Error:
Line 36: に、ASP.NET で使用されるセキュリティ認証モードの構成
Line 37: を有効にします。-->
Line 38: <authentication mode="Windows"/>
Line 39: <!--
Line 40: <customErrors> セクションは、要求の実行中にハンドル
|
さて、これをどう解釈すればよいのだろう?とくよくよ考えるよりは、グーぐる検索をするのが一番で、この記述に行き当たった。
要約するとこういうことだ。IISサーバーで
” It is an error to use a section registered as allowDefinition=’MachineToApplication’ beyond application level.” というエラー表示が出る理由には二つある。
ひとつはアプリケーションをちゃんとバーチャルダイレクトリとして設定していないこと。 これは設定を見直せばよい。
もうひとつは、サブフォルダーにweb.configがルートのweb.configとバッティングするための不具合、
で、今回の場合、サブフォルダのファイルがアクセスできない、ということで、後者だと考え探したらやはりsubfolderに入っていたweb.configがルートのWebFoldeを発見。 考えてみればあたりまえで、このサブフォルダー、以前のテストでスタティックなサイトをやはりIISで運営していたのをmodxでダイナミックなサイトにしようとそのままコピーしていたのだ、から当然web.configもコピーしてしまっていた、というわけだった。
解決策としては、このサブフォルダーのweb.configをバッサリ削除。
たくもう。
後記:サブフォルダーにweb.configが存在すること自体、ありうる話(フォルダーごとに書き換えのルールを変えるなど。たとえばOutboundのurl情報からサブフォルダー情報を取り除く) なのでサイトの設定によっては必要なのだが、IISのGUIを使っていれば、このマネージメントはちゃんとなされて調和のとれたweb.configが作成される。