• 締切済み

htaccessでキャッシュを制御

htaccessで「Safari」ブラウザーの時のみキャッシュの制御を したいのですが、書き方がわかりません。 Header set Pragma no-cache Header set Cache-Control no-cache 上記コマンドに条件文(Safariのみ)をつけるにはどうしたらよいのでしょうか? よろしくお願いします

  • PHP
  • 回答数4
  • ありがとう数0

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.4

ANo.3です。 >「Internal Server Error」になってしましました。。 そうですか・・。手元のサーバで手っ取り早く SetEnvIf User-Agent "Mozilla" safari Header set Pragma no-cache env=safari Header set Cache-Control no-cache env=safari としてテストはしたのですけどね(設置後に所定のhttpレスポンスが返るのを確認)。 #よもや最後の行末に「改行がない」ということはありませんよね?

iyosuke197
質問者

補足

改行はちゃんと入っていますね。 もうちょっと頑張ってみます。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

>ご案内頂いたリンクにて自分なりに作成してみましたが、 >思い通りには動いてくれませんでした。 > >SetEnvIf User-Agent "Safari" UA=safari >SetEnvIf UA safari Header set Pragma no-cache >SetEnvIf UA safari Header set Cache-Control no-cache 1行目のSetEnvIfはわかりますが、2行目・3行目はどういう意味でしょうか?提示したマニュアルにあるとおり、Headerの構文は Header [condition] set|append|add|unset|echo header [value] [early|env=[!]variable] です。なので、指示したいHeaderの最後にenv=...を付加するだけです。 SetEnvIf User-Agent "Safari" safari Header set Pragma no-cache env=safari Header set Cache-Control no-cache env=safari Apacheのマニュアルくらいは読めないと、あとあと苦労すると思います。今のうちに読めるようにしておいてください。せっかくわかりやすい和訳があるので英語版を読めとまでは言いませんが(これはphpのマニュアルも同じです)。

iyosuke197
質問者

補足

何度もありがとうございます。 ご教授いただいた SetEnvIf User-Agent "Safari" safari Header set Pragma no-cache env=safari Header set Cache-Control no-cache env=safari 設定してみたのですが、「Internal Server Error」になってしましました。。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

ANo.1です。 ちなみにこのカテゴリ(php)としては、『phpスクリプトでUserAgentをチェックしてheader()で所定のhttpレスポンスを返す』のもアリです。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

RTFM. http://httpd.apache.org/docs/2.2/ja/mod/mod_headers.html#header ----- 引用ここから env=... 引数で指定された 環境変数 が存在する (もしくは env=!... が指定されていて環境変数が存在しない) 場合は、Header ディレクティブで指定された動作が行なわれます。そうでない場合は、 ディレクティブはそのリクエストには何もしません。 ----- 引用ここまで UserAgentをチェックして環境変数をセットする(SetEnvIf)はわかりますよね? http://httpd.apache.org/docs/2.2/ja/mod/mod_setenvif.html#setenvif

iyosuke197
質問者

補足

ご回答ありがとうございます。 ご案内頂いたリンクにて自分なりに作成してみましたが、 思い通りには動いてくれませんでした。 SetEnvIf User-Agent "Safari" UA=safari SetEnvIf UA safari Header set Pragma no-cache SetEnvIf UA safari Header set Cache-Control no-cache ご教授ください

関連するQ&A

  • .htaccessでサーバエラー

    今までは.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

    • ベストアンサー
    • CGI
  • apache2でブラウザのキャッシュ制御をしたい

    apache2でxls,docファイルののキャッシュ制御をしたく、以下のページを参考に http://tech.bayashi.net/pdmemo/browsercache.html /etc/apache2/apache2.conf に <Files ~ "\.(doc|xls)$"> Header set Pragma no-cache Header set Cache-Control no-cache Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT" </Files> と書き込んだところ Invalid command 'Header', perhaps mis-spelled or defined by a module not included in the server configuration と言ったエラーが出てしまいました。 apache2でheaderに相当するコマンドを教えていただけると助かります。 よろしくお願いいたします。

  • キャッシュ(?)の消去について。

    <?php //$aはurlの配列です。 foreach($a as $v){ $imgNum = str_pad($count, 5, '0', STR_PAD_LEFT); $imgURL = "img/$imgNum.jpg"; if ( false == @file($imgURL) ){ printf("<a href=\"%s\"><img src=\"img/none.jpg\" /></a>\n", chop($v, "\n")); } else { printf("<a href=\"%s\"><img src=\"$imgURL\" /></a></li>\n", chop($v, "\n")); } //以下のようなものを含めたり。 $imgURL = NULL; @unlink($imgURL); clearstatcache(); } /* php header("pragma: no-cache"); header("cache-control: no-cache"); header("expires: 0"); html <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> .htaccess <Files ~ "\.(html|php|jpe?g|gif|png)$"> Header set Pragma no-cache Header set Cache-Control no-cache </Files> 上記3つも含めていますが、イメージの出力にあたるif文で分岐してくれません。 あきらかにfile関数に対応するjpgはないのですが。 ブラウザにキャッシュは記憶しないよう設定しています。 色々考えましたが、停止してしまいました。 ご回答お待ちしております。 */

    • 締切済み
    • PHP
  • htaccessのエラーについて

    htaccessのエラーについての質問です。 リダイレクトを以下のように設定して正常に動作しています。 RewriteEngine On RewriteBase / RewriteRule ^◯◯◯◯◯◯◯$ /◯◯◯◯◯◯◯ [R=301,L] これにキャッシュコント―ロールのため、 以下のコードを追加したところ <Files ~ "\.(pdf|png|jpg|gif)$"> Header set Cache-Control no-cache Header set Pragma no-cache </Files> Internal Server Error になってしまいました。 文字コードや不要な空白などのミスは無いように思うのですが、 htaccessの内容によってエラーの発生は起こるのでしょうか?

  • 検索結果キャッシュにhtaccessは影響する?

    諸事情により一時的にhtaccessで「キャッシュをさせない(Header add Pragma "no-cache")」旨の記述をした場合での質問です。 これは単にユーザのローカル環境だけキャッシュをさせないという意味でしょうか。 それとも、Googleなどの検索結果のキャッシュもされなくなってしまうのでしょうか? お詳しい方、アドバイスを頂けますと幸いです。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • キャッシュの制御がうまくいきません

    毎回お世話になっております。 現在、Perlを用いてWebページを作成しておりますが、キャッシュの制御に困っております。 キャッシュを制御したいhtmlページのHEAD部分には ******************************************************* <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" content="no-cache"> <META HTTP-EQUIV="Expires" content="Mon, 1 Jan 1990 01:01:01 GMT"> ******************************************************* 上記のMETAタグを入れているのですが、次の画面へ行き「戻る」ボタンを押すと戻ってしまうのです・・・ Perl内に、 print "Cotent-Type: text/html; Pragma: nocahe\n\n"; を記述してもだめでした。 「教えて!goo」の中で次の画面に進むときに「replace()」で飛ばすと戻らない回答があったのですが、次の画面に行くときにPOSTでデータを受け渡さないといけないので、「このMethodはGETです」とエラーが表示されてしまいます。 様々なHPで検索して試してみたのですが、どれもだめでした・・・ なにかよい回答がありましたらよろしくおねがいいたします。

    • ベストアンサー
    • CGI
  • 画像が更新されない

    はじめまして。 ご相談したいことなのですが、 php5 mysql を使用してプログラムを作成しております。 そしてつまずいてしまい2日間解決できずに皆様の力をお借りできればと思います。 フォームを使用し画像を登録するシステムを作っています。 そして画像を変更するシステムを作成しているところで、画像の更新が表示上反映されないのです。 データベース・ティレクトリ内は更新されていて、ページを更新(F5)をするまで画像が反映されないのです。 キャッシュが残っているのかと思い、 <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="-1" /> <meta http-equiv="Cache-Control" content="no-cache" /> の記述をしたり 画像を入れているディレクトリに.htaccessを使い Header set Cache-Control "no-cache" Header set Pragma "no-cache" と記述しているのですがまったくダメで困っています。 単純なことかも知れませんがよろしくお願い致します。

    • ベストアンサー
    • PHP
  • 画像が更新されない2

    はじめまして。 ご相談したいことなのですが、前回下記の質問をしました。 ************************************************************************** php5 mysql を使用してプログラムを作成しております。 そしてつまずいてしまい2日間解決できずに皆様の力をお借りできればと思います。 フォームを使用し画像を登録するシステムを作っています。 そして画像を変更するシステムを作成しているところで、画像の更新が表示上反映されないのです。 データベース・ティレクトリ内は更新されていて、ページを更新(F5)をするまで画像が反映されないのです。 キャッシュが残っているのかと思い、 <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="-1" /> <meta http-equiv="Cache-Control" content="no-cache" /> の記述をしたり 画像を入れているディレクトリに.htaccessを使い Header set Cache-Control "no-cache" Header set Pragma "no-cache" と記述しているのですがまったくダメで困っています。 単純なことかも知れませんがよろしくお願い致します。 ************************************************************************ 上記の質問でURLの後ろにrand関数で?id=***などをつけるとページが更新されるとご回答頂きまして、試したところそのときは無事出来たのですが、また何度かやっているうちに画像が更新されないようになっています。 何か問題があるのでしょうか? 使用しているブラウザの問題なのでしょうか? 何度も同じ質問になってしまい申しわけございませんがよろしくお願い致します。

    • ベストアンサー
    • PHP
  • htaccessでキャッシュを設定した場合

    htaccessで以下のようにキャッシュを設定した場合でも、 「aaa.jpeg?aa=20171231」などリンクに?=~をつけてリンクURLを変更すれば再読み込みが発生しますか? <Files ~ ".(gif|jpe?g|png|ico|js|gz|otf|ttf|eot|woff)$"> Header set Cache-Control "max-age=2592000" </Files>

  • 先日の携帯用のクイズですが、同一ファイル内で処理している状態です。

    先日の携帯用のクイズですが、同一ファイル内で処理している状態です。 戻るボタンを押した時に「不正な操作がありました」という表示を入れたいのです。 そこで、 header("pragma: no-cache"); header("cache-control: no-cache"); header("expires: 0"); を入れても、普通に戻れてしまいます。 どうか、アドバイスをお願いします

    • 締切済み
    • PHP

専門家に質問してみよう