プロが教えるわが家の防犯対策術!

ロリポップでの.htaccess設定について教えてください。

.htmlでPHPを使えるようにしたいのですが、
管理しているファイルが.htmlと.shtmlが混ざっています。

.htmlでPHPが読めるように
AddHandler php5.2-script .html
と追記して、.htmlでPHPは使えるようになったのですが、
何でか指定していない、.shtmlがエラーを起こします。。

.htmlではPHPを利用
.shtmlにはPHPを使用しない
という事がやりたいです。

逆に.htmlにSSIができるように
AddHandler server-parsed .html
と記述すると問題なく .htmlでもSSIができて.shtmlでも
エラーが起こりません。

.shtmlがエラーにならない記述の仕方を教えてください。

A 回答 (3件)

>shtmlとしては動いたのですがインクルード文がダメみたいです。


試してみましたが私のほうでも駄目でした。
そこで.htaccessに以下を追記。
AddHandler server-parsed .shtml
そうすると、読み込みは出来ましたが、文字化けしました。

SSIの読み込みで
<!--#include file="include.html" -->
<!--#exec cgi="include.html" -->
<!--#exec cgi="include.php" -->
の全てで文字化けしました。

あまりサーバーに詳しくないので、
この辺はわからないです(^^;

手っ取り早いのは、変更されていない拡張子で
includeすれば良いのではないでしょうか。

// .htaccess
AddHandler php5.2-script .html .php

// SSI
<!--#include file="include.htm" -->

.htmは指定されていないでしょうから、
正常に読み込めるはずです。

// 余談
.htmlと.shtmlと.php
などいろいろな問題から混在しているのだと思いますが、
経験上、管理の観点(長い目で見ると)からはまとめるのが
好ましいと思います。

最近のクローラーは優秀なので、ちゃんと301で
転送してあげればちゃんと反映してくれますよ。
    • good
    • 0
この回答へのお礼

いつもありがとうございます!
また、進みました!

> AddHandler server-parsed .shtml
の追記ですが、追記しても私の環境ではなぜかエラーのままでした。。

ですが、
// SSI
<!--#include file="include.htm" -->

仰る通り、htmやincなど指定していない拡張子ではインクルード文が使えましたので、
おそらくshtmlからphpと定義されているファイルを読み込むとエラーになるような気がしました。
ですので、順次htmやincへ変更していこうと思います。

そして、文字化けの件ですが、おそらくインクルードする側とされる側の文字コードが違うため起こると思われます。
読み込む側に
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
など、文字コードを指定してあげると解消されました。

// 余談
最近ロリポップに移動したばかりなのですが、
やっとphpが使える環境になりましたので、phpで統一を図ろうと試行錯誤中での出来事でした!
また、301リダイレクトのアドヴァイスもありがとうございました。

困ったことがあったらまた質問させていただきたいと思いますので、
その時見かけましたらよろしくお願い致します。

お礼日時:2011/06/23 11:43

No1です。



ロリポップにテストできるサーバーがあるので
試してみましたが、正常に動きました。

// .htaccess
AddHandler php5.2-script .html

// test.shtml
<!--#echo var="LAST_MODIFIED"-->

// test.html
<?php echo date('Y-m-d H:i:s'); ?>

SSIの表記ミスってことなのかなあ。
まずは簡単なSSIにして稼動を確かめてから、
実際のSSIコマンドで試されてはどうでしょう。

そうすることで.htaccessの問題はひとまず解決するかと^^
    • good
    • 0
この回答へのお礼

またまた、ありがとうございます!
教えていただいた方法で記述するとちょっと進みました!
shtmlとしては動いたのですがインクルード文がダメみたいです。

動いた.shtmlページに他ページでも記述している
下記を入れると

// test.shtml
<!--#include file="test.html" -->

// test.html
SHTMLのインクルードテスト 成功

IEではこのページは表示できません
Chromeではエラー 330 (net::ERR_CONTENT_DECODING_FAILED): 不明なエラーです。
と出てきました。

.htaccessで
AddHandler php5.2-script .html
をトルツメすると正常に動いているので記述間違いは無いと思います。。

う~何が原因なのやら、
また、お気づきの点がございましたらご指摘をお願いします。

お礼日時:2011/06/22 23:23

.htmlをPHPに。


.shtmlをSSIにするなら

AddHandler server-parsed .shtml
AddHandler php5.2-script .html

で動きませんか?
    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。
さっそく、試してのたのですが、やはり.shtmlページにアクセスをするとエラーが出てしまうようです。。

お礼日時:2011/06/22 12:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!