さくらインターネットで.htmlを.phpとして動かす方法

さくらインターネットのマニュアルではhtmlファイルをphpファイルとして動かすことはできないとされていますが、自己責任でやる分には問題が内容で、わりと簡単に実現できます。

ただ、.htmlを.phpとして動かす方法としてよく解説されている「.htaccess」への「Action myphp-script~」の記述だけでは機能しないので、一手間必要になります。

  1. php-cgiへのパスを書いたphp.cgiファイルを用意する
  2. .htaccessにphp.cgiのパスを書き足す
  3. php.cgiファイルとディレクトリのパーミッションを755に設定する

かつてはphp-cgiを自分のディレクトリにコピーしたり、パーミッションの設定でも細かく必要だったようですが、私が使っている限りでは上の3つの手順で動いています。

設置と設定

php.cgiの設置

ウェブサイトのルートとなるディレクトリの適当な場所にphp.cgiを作ります。ここでは/binの下においていますが、好きなところでいいです。

    • www
      •  ディレクトリA(ウェブサイトルート)
        • index.html
        • js
        • bin
          • php.cgi

php.cgiの記述

上で作成したphp.cgiファイルの中身は下のように記述します。

#!/bin/sh
exec /usr/local/bin/php-cgi

php-cgiファイルそのものをコピーして設置する方法もあるようですが、バージョン管理に難が出るのでこれでいけるようにしてるのかもしれません。

パーミッションの設定

/binディレクトリもphp.cgiもパーミッションは755か705です。phpとして実行したいhtmlファイルやphpのパーミッションも755にするよう書かれていますが、特になにもしなくても動いてます。

.htaccessの設定

phpとして実行したいhtmlのあるフォルダに下のように記述した.htaccessを置けば完了です。

サイトにあるhtmlファイルすべてをphpとして実行したければ、ウェブルートディレクトリにある.htaccessに追記します。

Action myphp-script /bin/php.cgi
AddHandler myphp-script .php .html

特定のファイルだけを対象にしたい場合は<Files “index.html”>~</Files>のように、対象ファイルを指定します。

<Files "index.html">
Action myphp-script /bin/php.cgi
AddHandler myphp-script .php .html
</Files>

注意点

htmlで作っていたサイトを上の手順でphpに移行したところgooglebotも変わらず読みに来てしっかりインデックスもされていました。

が、サーバのログを見たところbingbotがやたらエラーを残していたので気になってbing webマスターツールを覗くと、なぜかインデックスしなくなっていました。

「Bingbot として取得」をすると「状態: 4xx の HTTP ステータスコードが返されました。」と出る。htmlのときはきちんと読めていたのに理由がさっぱり分からず、パーミッションをはじめいろいろ試したけどダメ。

色々試したのちにサーバの設定を見ると、「国外IPアドレスフィルタ」の項目とマニュアルを発見。

国外IPアドレスフィルタ – さくらのサポート情報

弊社にて管理する国内IPアドレスリストに含まれていないIPアドレスからのアクセスを制限します。
※Googlebot は有効化の状態でもアクセス可能です。

HTTP/HTTPS制限対象範囲
ファイル
php.cgi php5.cgi  php-cgi等
^php[0-9]?([\.\-]cgi)?$
お客様設置の PHP バイナリファイル

ようするにgooglebotは国外IPアドレスフィルタ対象外で、bingbotはアクセス制限の対象だったわけです。

解決策

というわけで、「国外IPアドレスフィルタ」の「アクセス制限設定」を「無効」にすればOK。

国外IPアドレスフィルタを無効にした後「Bingbot として取得」を試してみるとあっさり成功。

 

googlebotがクロールエラーになっていればすぐ気づいたんですが、ブラウザでは正常に表示される上にグーグル先生もインデックスしてくれているでは、すぐには気づきませんわ。

どちらも検索エンジンクローラーには違いないのに、googleはよくてbingはだめってややこしいですね。

だけどこの件がなかったら海外からのアクセスが規制されたままだったので、これはこれでよかったのかなと。

スポンサーリンク

ウェブサービス