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

今までは.htaccessに

<Files ~ "\.(pdf|html)$">
Header set Pragma no-cache
Header set Cache-Control no-cache
</Files>

上記の記述をして運用していたのですが、レンタルサーバを契約更新して
新しいサーバに移動してからサーバエラーがでてしまい、HPが閲覧不可となります。
この記述を外すと正常に動作します。
しょうがないのでHTML単位で制御しようと

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="expires" content="0">

上記をheadに記述していますが、効果なくキャッシュされてしまいます。
どうにか.htaccessを使う様にできますか?これはサーバ側の仕様でしょうか・・・
サーバはOCNのBizメール&ウェブ ビジネス のホスティングサービスを利用しています。

レンタルサーバ契約時のhtaccess初期記述内容
Options -Indexes
SetEnv TZ JST-9

A 回答 (4件)

ん~。

ANo.3の結果を見るとやっぱりHeaderを指定するのがダメっぽいですな。
とするとこれはもうどうしょうもないかな。
OCNにこだわりやお付き合いや政治的な圧力が無ければさっさと別の場所に移るのが吉かと。

どーーーーーしてもこのまま運用してかつno-cacheしたいんだい、となると・・・・例えばPHPとRewriteが使えるのであれば(←OCN メール&ウェブ ビジネスの説明を見るとWordPressが使えるらしいのでこれはOKなはず)、no-cacheヘッダーを返した後ファイルを読んでその中身を返すようなphpを書き、それを.nocache.phpなどという名前でサーバーのドキュメントルートにアップロードする。
そしてドキュメントルートの.htaccessには以下のような設定を書く。以下の内容はFilesディレクティブの中に入れなくていいというか入れちゃいけない。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.(html|pdf)$
RewriteRule . /.nocache.php [L]

これで.htaccessにHeaderディレクティブを書けなくてもあなたがやりたい事は実現可能だ。
    • good
    • 0
この回答へのお礼

phpまでいくと私の手には負えなくなってきますので、サーバ再移転を含めて検討します。
勉強するか否かでしょうか笑

本当にありがとうございました。

お礼日時:2014/10/24 15:22

> 4.5.


> →500が返ってきました。HTML表示せず
という事は4が鍵かな。
Files ~ つまりFilesMatchを許可しないという事なのかも知れない。

test.htmlとtest.phpファイルをドキュメントルートに置いて、.htaccessを
Options -Indexes
SetEnv TZ JST-9
<Files "test.html">
Order deny,allow
Deny from All
</Files>

<Files "test.pdf">
Header set Pragma no-cache
Header set Cache-Control no-cache
</Files>
としてみよう。これでindex.htmlやhoge.pdfはコンテンツが返ってくるがtest.htmlは403が返ってきて、test.pdfはHTTPレスポンスヘッダーにPragma no-cacheならば、正規表現によるファイル名のパターンマッチが許可されないという事になる。
これで500ならtest.htmlだけにしてみる、その次にtest.pdfだけにしてみる、という風に試していただきたい。
    • good
    • 0
この回答へのお礼

重ね重ね本当にありがとうございます。

そしてお詫びをしなければなりません。
前回の試行の結果に誤りがありました。
4.は成功しておりました。
嫌な予感がしてもう一度試してみたのですが、anmochiさんが仰るとおりの内容でした。

結果→pdfのみ403

申し訳ありませんでした。5.及びFileMatchはhtm pdfともに500でした。

そして今回の試行結果ですが

<html pdf>
test.html →500
hoge.html →500
test.pdf →500
hoge.pdf →500

<htmlのみ>
test.html →403
hoge.html →○
test.pdf →○
hoge.pdf →○

<pdfのみ>
test.html →500
hoge.html →500
test.pdf →500
hoge.pdf →500

以上の結果になりました。

お礼日時:2014/10/23 09:37

> 記述してみましたが、403ではなく500が返ってきました。


500か、やねこいな。
500というのは「何か分からないけどとにかくエラーになったよ」という意味で、
原因の特定が難しい。
とにかく最初から.htaccessが置かれていたのだから.htaccess自体が許可されないという事はないはずなので、ちょっとずつ書いてはアクセスしてみよう。

1.初期状態の.htaccessに戻す。
これでダメならもうどうしょうもない。OCNに問い合わせるべきだろう。

2..htaccessを以下の内容にする。
Options -Indexes
SetEnv TZ JST-9
Order deny,allow
Allow from All
これは正しくhtmlが表示されたら成功。

3..htaccessに以下を記述。
Options -Indexes
SetEnv TZ JST-9
Order deny,allow
Deny from All
これは403が返ってきたら成功。

4..htaccessに以下を記述。
Options -Indexes
SetEnv TZ JST-9
<Files ~ "\.(pdf)$">
Order deny,allow
Deny from All
</Files>
これでhtmlは表示できるがpdfをダウンロードしようとすると403になると成功。
これが成功なら後はHeaderだけだ。

5..htaccessに以下を記述。
Options -Indexes
SetEnv TZ JST-9
<Files ~ "\.(pdf|html)$">
Header set Pragma no-cache
Header set Cache-Control no-cache
</Files>



Files ~ の変わりにFilesMatchを使うとうまくいく場合は記述をそちらに変えよう。
Options -Indexes
SetEnv TZ JST-9
<FilesMatch "\.(pdf|html)$">
Header set Pragma no-cache
Header set Cache-Control no-cache
</FilesMatch>

あと、このファイルを修正するのはWindowsのメモ帳ではいけない。
オリジナルの.htaccessを調べて改行コードがLFのみであればサクラエディタなどで編集してアップロードしよう。
    • good
    • 0
この回答へのお礼

書き込みありがとうございます。

1.2.
→動作しました

3.
→403が返ってきました。

4.5.
→500が返ってきました。HTML表示せず

エディタはTeraPadを使っています。
改行コードの指定はないようですが、LFのみでアップしましたが改善されませんでした。
http://support.ntt.com/mw-business/faq/detail/pi …

お礼日時:2014/10/22 11:42

仮に


<Files ~ "\.(pdf|html)$">
Header set Pragma no-cache
Header set Cache-Control no-cache
</Files>

<Files ~ "\.(pdf|html)$">
Order deny, allow
Deny from All
</Files>
としてアクセスした時にサーバーエラーにならずに403になるようなら
Headerディレクティブ(mod_header)が無効になっている。
この場合はHeaderを使えるようにOCNさんと交渉するか諦めてよそに移るかしかないな。
    • good
    • 0
この回答へのお礼

書き込みありがとうございます。
記述してみましたが、403ではなく500が返ってきました。
まだ希望はあるのでしょうか・・・?

お礼日時:2014/10/20 18:48

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