6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

お名前.comにて、拡張子htmlのままphpを動かす

Posted at

既存サイトのheaderとfooterをincludeさせようと思い、
拡張子htmlのままphpを動かす為、「お名前.com」サーバーにてhtaccessに
以下コードを追加した。

AddType application/x-httpd-php .php .html

しかし、できなかった。

当然のようにレンタルサーバーによって書き方が違う為、
上記記述では動かない場合があるのだ。
しかし久しぶりに案件でレンタルサーバーを触り、
失念してしまっていたので、忘れないように残しておく。

#対処法
まずは「お名前.com」のQ&Aには以下のような回答がある。
https://help.onamae.com/app/answers/detail/a_id/9096/

つまりCGIとしてPHPを動かす必要があるとのこと。
一生懸命ググって、以下の方法を見つけることが出来た。

①まず、「.htaccess」には以下のように書く。

Action myphp-cgi /php.cgi
#AddHandler myphp-cgi .html
<Files ~ "^index\.html?$">
  AddHandler myphp-cgi .html .htm
</Files>

「.htaccess」がアップロードされていない場合はアップロード。
されている場合は記述を追加。パーミッションを「755」にする。

②次に、「php.cgi」というファイルを用意し、以下のように書く。

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

「php.cgi」がアップロードされていない場合はアップロード。
パーミッションを「700」にする。

以上で動くはず

私はこれでうまくいったが、
もしこれで動かなければ、改行コード、文字コードを
変えるといい、という情報があるので、その場合は以下のようにする。

  • 「.htaccess」と「php.cgi」はSHIFT-JSのLF
  • 「index.html」はUTF-8のLF

#ディレクトリを変える場合
ホームディレクトリではなく、色んなサイトをディレクトリ切って管理していて、
とあるディレクトリのみ対応させたい要件が出た。

つまり、

home
├ .htaccess
└ php.cgi

ではなく、

home
└ site
   ├ .htaccess
   └ php.cgi

とする必要がある。

この場合、先程の「.htaccess」の記述を以下のように変える必要がある。

Action myphp-cgi /site/php.cgi ←ディレクトリを変える
#AddHandler myphp-cgi .html
<Files ~ "^index\.html?$">
  AddHandler myphp-cgi .html .htm
</Files>

以上で、「site」ディレクトリ以下で拡張子「html」のままで
PHPが動き、headerとfooterがincludeできた。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?