web.config

Win

Windows共用/専用サーバーでは、Windows認証の設定・要求フィルターの設定などのIISの動作をフォルダ単位で変更できる web.config 機能に対応しています。

web.configの設定について

ASP.NET の構成データは、web.config というXMLベースのテキストファイルとして保存されます。

ASP.NETを利用するアプリケーションのパッケージには、通常 web.config ファイルが含まれますが、お客様で任意のディレクトリに設置することも可能です。

web.config は以下の形式で構成されます。

<?xml version="1.0" encoding="UTF-8" ?>
  <configuration>
    <appSettings>
      <!--共通パラメータの設定- 
    </appSettings>
    <system.web>
    <!--アプリケーション固有の設定-->
    </system.web>
</configuration>

下記よりweb.config の設定方法をご案内しておりますのでご参考下さい。

web.configの設定例
エラー画面の編集方法

ウェブサイトのエラー画面をカスタマイズする設定をweb.configにて行うことができます。カスタマイズする場合は、エラーコードごとに、表示させたいエラーページをお客様にてご用意ください。

エラーコードが404のエラー画面をカスタマイズしたい場合、以下のように web.config を記述します。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
    <httpErrors errorMode="Custom">
      <remove statusCode="404" subStatusCode="-1" />
      <error statusCode="404" path="●表示するエラーページのパスを記述●" responseMode="File" />
    </httpErrors>
  </system.webServer>
</configuration>

「●表示するエラー画面のパスを記述●」 の箇所に、web.configを置いている場所から見て、お客様でご用意頂きました404のエラーページへのパスを記述して下さい。
例えば、web.configの絶対パスE:\home\LocalUser\sppd00001\www\web.configと エラーページの絶対パスE:\home\LocalUser\sppd00001\www\error\404.htmlの場合は「error\404.html」を記述して下さい。

Windows認証の例

特定のディレクトリにWindows認証をかけたい場合、以下のように web.config を記述します。web.config をアップロードしたディレクトリを含む、配下のディレクトリ全てに対しWindows認証が有効になります。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="false" />
        <basicAuthentication enabled="true" />
      </authentication>
      <authorization>
        <remove users="*" roles="" verbs="" />
        <add accessType="Allow" users="●ユーザーIDを記述●" />
      </authorization>
    </security>
  </system.webServer>
</configuration>

「●ユーザーIDを記述●」 の箇所に、「レンタルサーバー登録通知書(ウェブ)」に記載されている、お客様の「管理者ユーザーID」を記述して下さい。

リダイレクトの例

全てのアクセスを、特定のサイトへリダイレクトさせたい場合、以下のように web.config を記載します。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="RedirectSample" enabled="true">
          <match url="(.*)" ignoreCase="false" />
          <action type="Redirect" url="●リダイレクト先のURL●" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

「●リダイレクト先のURL●」 の箇所に、リダイレクトする先のWEBサイトURLを記述して下さい。 例:http://www.example.com/

http://〜のアクセスをhttps://〜にリダイレクトさせたい場合、以下のように web.config を記述します。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Force HTTPS" enabled="true">
          <match url="(.*)" ignoreCase="false" />
          <conditions>
            <add input="{HTTPS}" pattern="off" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true"
          redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
ブラウザでファイル名を省略してアクセスした場合に表示するファイルの設定

ブラウザでファイル名を省略してアクセスした場合、index.aspx index.asp index.cgi index.php Default.htm Default.asp index.htm index.html deault.aspxの順に検索をし、見つかったファイルを表示します。いずれのファイルも見つからなかった場合は、403Forbiddenエラーを表示します。

これらのファイルよりも優先して表示するファイルを追加することも可能です。以下の例では test.html を追加しています。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
    <defaultDocument>
      <files>
        <add value="test.html" />
      </files>
    </defaultDocument>
  </system.webServer>
</configuration>
要求フィルターの設定

IIS 7の機能として、「要求フィルター」機能があります。要求フィルターは、HTTPアクセスの要求の種類を絞り込み、特定のHTTP要求をブロックすることで、有害な可能性のある要求をサーバーが受信しないようにすることができる機能です。

サーバー初期設定では、以下の拡張子への要求がブロックされており、404(404.7)エラーが表示されます。特定の拡張子へのアクセスができない場合は、要求フィルターの設定をご確認ください。

.asa..asax.ascx.master.skin.browser.sitemap.config.cs.csproj.vb
.vbproj.webinfo.licx.resx.resources.mdb.vjsproj.java.jsl.ldb.dsdgm
.ssdgm.lsad.ssmap.cd.dsprototype.lsaprototype.sdm.sdmDocument.mdf.ldf.ad
.dd.ldd.sd.adprototype.lddprototype.exclude.refresh.compiled.msgx.vsdisco 
 

これらの拡張子は、web.configに以下のように記述することで要求を許可することが可能です。以下の例では asaxファイルへの要求を許可し、masterファイルへの要求を拒否しています。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <fileExtensions  applyToWebDAV="true" >
          <remove fileExtension="●拡張子●" />
          <remove fileExtension=".asax" />
          <add fileExtension="●拡張子●" allowed="false" />
          <add fileExtension=".master" allowed="false" />
          <!-- ※ allowed="true" とすると要求を許可します。 -->
        </fileExtensions>
     </requestFiltering>
    </security>
  </system.webServer>
</configuration>

「●拡張子●」 の箇所に、拡張子を記述して下さい。

標準サポート外の拡張子で、スクリプトを動作させる設定

IIS 7で標準で登録されていない拡張子の場合、通常は404(404.3)エラーとなります。この場合、「ハンドラマッピング」または「MIMEの種類」を追加する必要があります。

ある拡張子に対して、スクリプトを動作させたい場合、「ハンドラマッピング」を追加します。

以下の例では、拡張子 .phtml ファイルに対して、FastCGIのPHPを動作させます。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="●ハンドラの名称●"
        path="●拡張子●"
        verb="●ハンドルする動詞(POST/GETなど)●"
        modules="●要求を処理するモジュール●"
        scriptProcessor="●実行可能ファイル(オプション)●"
        resourceType="●マッピングが適用されるリソース●" />
      <add name="PHP-FastCGI"
        path="*.phtml"
        verb="GET,HEAD,POST"
        modules="FastCgiModule"
        scriptProcessor="c:\php\php-cgi.exe"
        resourceType="Either" />
    </handlers>
  </system.webServer>
</configuration>
ハンドラマッピングに利用するモジュール名(抜粋)
用途モジュール名
ISAPIIsapiModule
FastCGIFastCgiModule
CGICgiModule
SSIServerSideIncludeModule
標準サポート外の拡張子で、ファイルをダウンロードさせる設定

ある拡張子に対して、ファイルをダウンロードさせる場合、「MIMEの種類」を追加します。

以下の例では、拡張子 .xbm のファイルをビットマップ画像としてダウンロードさせます。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension="●拡張子●" mimeType="●MIMEの種類●" />
      <mimeMap fileExtension=".xbm" mimeType="image/x-xbitmap" />
    </staticContent>
  </system.webServer>
</configuration>
StateServerを利用する設定

セッション管理にStateServerを利用する場合の設定です。この設定は必ずドキュメントルートのディレクトリに記載してください。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
   <sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" 
   cookieless="false" timeout="20" />
  </system.webServer>
</configuration>
特定のIPアドレスからのアクセスのみを許可/拒否する設定

下記は特定のIPアドレスからのアクセスのみを許可する場合の設定です。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <security>
      <ipSecurity allowUnlisted="false">
        <add allowed="true" ipAddress="●192.168.10.3●" subnetMask="255.255.255.255" />
      </ipSecurity>
    </security>
  </system.webServer>
</configuration>

下記は特定のIPアドレスからのアクセスを拒否する場合の設定です。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <security>
      <ipSecurity allowUnlisted="true">
        <add allowed="false" ipAddress="●192.168.10.3●" subnetMask="255.255.255.255" />
      </ipSecurity>
    </security>
  </system.webServer>
</configuration>

特定のIPアドレスを許可、拒否する場合は●内の箇所に特定のIPアドレスを記述してください。

ネットワーク単位でアクセスを許可/拒否する設定

下記はネットワーク単位でアクセスを許可する場合の設定です。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <security>
      <ipSecurity allowUnlisted="false">
        <add allowed="true" ipAddress="●192.168.10.0●" subnetMask="●255.255.255.0●" />
      </ipSecurity>
    </security>
  </system.webServer>
</configuration>

下記はネットワーク単位でアクセスを拒否する場合の設定です。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <security>
      <ipSecurity allowUnlisted="true">
        <add allowed="false" ipAddress="●192.168.10.0●" subnetMask="●255.255.255.0●" />
      </ipSecurity>
    </security>
  </system.webServer>
</configuration>

「ipAddress=」側の●内の箇所にはネットワークアドレスを、「subnetMask=」側の●内の箇所にはサブネットマスクを記述してください。サブネットマスクはネットワーク単位によっては例と異なりますのでご注意ください。