サーバー

.htaccessに代わるweb.config

windows系サーバーで、.htaccessの動きをweb.configで実現する

先日仕事で「winserver」を利用する機会があり、htmlファイルの状態でphp構文を動かそうと、いつものように.htaccessを生成しアップしたところ、まったく適応されず、悩んだ末にサポートセンターに問い合わせしました。

いただいた回答は、なんと.htaccessが使えないという事でした。

これはwinserver自体が、windows OSでのサーバーの為との事で、その後色々検索もしてみたのですが、明確な解決方法が見つからず…
.htaccessがwindows系のサーバーでも使える、といった記事も発見し試してみても効果はありませんでした。

再度winserverサポートセンターに問い合わせ、.htaccessと同様の動きが出来ないかと相談したところ、「web.configで同様の設定が可能です。」との事でした。

知識がないのがお恥ずかしい限りですが、初めてweb.configというものを知り、分からないなりにも検索を活かし試行錯誤するも…ダメでした。

.htaccessでの指定

ちなみにサーバーにもよりますが、基本は.htaccessだと以下の指定でhtmlファイル内のphpを動かすことが可能です。

AddHandler myphp-script .php .html

web.configでの指定

結局自分では解決できず、これがweb.configだとどうなるか?をサポートセンターに聞いてみたところ、ありがたくも設定済の「web.config」ファイルを添付してもらいました。

内容は以下の通りとなります。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
  <handlers>
  <add name="HTML as PHP" path="*.html" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\v5.4\php-cgi.exe|-d open_basedir=&quot;;E:\CustomerData\webspaces\webspace_00124744;E:\TEMP\;%USERPROFILE%\AppData\Local\Temp;&quot;" resourceType="File" />
  </handlers>
  </system.webServer>
</configuration>

そわそわしつつ、期待に胸膨らませ、これを.htaccess同様に適用させたいディレクトリ内に配置すると……動いた!!

web.configの考察

書いてある内容を読み解くと、5行目にある、

<add name="HTML as PHP" path="*.html" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\v5.4\php-cgi.exe|-d 

が、「これでhtmlファイルでもphpを動かす事が出来るよ!」っていう事だというのはわかるのですが、いかんせんシステムの知識がないもので、僕の見解はこれが限界でした。

いずれにしても今回のような現象に対しては、windows系のサーバーに特殊な働きをさせる場合は、.htaccessではなく、web.configを利用するという事がわかりました。

まさに目からウロコでした。

同じような対策をお探しの方に少しでもこの記事がお役に立てれば幸いです。

  • このエントリーをはてなブックマークに追加