常日頃から Apache を利用している身としては、Windows Server 案件って色々と違いがあるので悩ましいですね。
いつもだったらささっと htaccess を編集して行っているあれやこれや…うっかり Windows Server だった日には、目も当てられません。
今回は Windows Server で htaccess 的なことをするための「web.config」について、実際の記載例や比較なども交えながら(主に自分用に)まとめていきたいと思います。
web.config の基本について
そもそも「web.config」って何ぞや…ということについて、基本的な解説をしておきたいと思います。
Microsoft Internet Information Services(以下 IIS)で利用される、設定ファイルです。
htaccess 同様、デフォルトで表示するファイルの指定や、リダイレクト設定に加え、Basic認証設定なども記述することができます。
注意点としては以下のとおり。
- エンコーディングが UTF-8 だと動作しない場合がある(サーバーによる)
- IISのバージョンによって記述が変わる場合がある
特にエンコーディングについては、ファイル内で指定しようがしまいが関係なく動作しない場合があるので、要注意です。
最低限の記述方法
必要であればコピペしてしまってください。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
</system.webServer>
</configuration>
ご覧のとおり、XMLです。
Webサイトに関する記述は「system.webServer」タグ内に記述します。
常時SSL化に対応する
頻繁に利用する処理としては常時SSL化に伴うリダイレクト処理ではないでしょうか。
htaccess に書くとこんな感じですね。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
これを web.config に記述すると、こんな感じです。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
結局やることは一緒なのですが、どうしても冗長になりますね。
デフォルトで表示するページを変更する
サーバー設定で対応することが多いように思いますが、htaccess および web.config でも変更することが可能です。
htaccess の場合は以下のようになります。
# Default Page Change
DirectoryIndex index.html index2.html
半角スペース区切りで、左から優先順位が高いということになります。
web.config の場合は以下のとおり。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<defaultDocument enabled="true">
<files>
<add value="index.html" />
<add value="index2.html" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
こちらも上に記述されているものが優先度高です。
htaccess で行いたい処理として、メインになるものを web.config の記述にしてみました。
正直なところ、ASPを動作させたい場合以外で Windows Server を選択する必要というのは「全く」ないように思いますが…
うっかり Windows Server 案件に遭遇した場合の助けになれば幸いです。