- ベストアンサー
スタイルシートファイルへのリンクを第三者に知られないようにする方法
- スタイルシートを暗号化したい場合、HTMLと同じファイルに記述することを推奨
- スタイルシートを別ファイルとし、第三者に知られずにリンクさせる方法として、PHPなどのサーバサイト・プログラムと組み合わせたキャッシュ制御のレスポンス・ヘッダーを出力する手段がある
- 他にもhtmlヘッダーのメタタグや.htaccessを使用してブラウザーやプロキシサーバにキャッシュさせない方法がある
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
試したことはないですが、以下のような方法ではどうでしょうか。 CSSは公開ディレクトリの外に置き、PHPで該当CSSの出力を行います。 その際、ノーキャッシュヘッダーを吐くことでキャッシュもされません。 ディレクトリ構成(/var/www/htmlが公開ディレクトリ) /var/www/css/stylesheet.css /var/www/html/index.html /var/www/html/index.php ・index.html <link href="/index.php" rel="stylesheet" type="text/css" /> ・index.php header('Cache-Control: private'); header('Pragma: private'); header("Last-Modified: " . gmdate("D, d M Y H:i:s", time()) . " GMT"); header('Content-Type: text/css'); header(sprintf('Content-Length: %d;', filesize(dirname(__FILE__) . '/../css/stylesheet.css'))); readfile(dirname(__FILE__) . '/../css/stylesheet.css');
その他の回答 (1)
- mookun2007
- ベストアンサー率59% (28/47)
間違えました。 header('Cache-Control: private'); header('Pragma: private'); ↓ header('Cache-Control: no-cache'); header('Pragma: no-cache');
お礼
mookun2007さん 追加のコメント、ありがとうございました。
補足
mookun2007さんへのお礼を書いた後ですが、ここにいる方でmookun2007さんの前述の回答にある方法を利用する場合、CSSフォルダ及びファイル(stylesheet.css)を公開ディレクトリ内においても意図したとおりスタイルシートファイルへのリンクを第三者に知られないかどうかお分かりの方おられますか? 共有レンタルサーバなので公開ディレクトリより上にCSSフォルダ及びファイルを設置することに問題があるためです。 CSSフォルダ及びファイルを公開ディレクトリ内においた場合、正しくCSSはレンダリングされても、それでスタイルシートファイルへのリンク(及びスタイルシートのファイル名:stylesheet.css)を第三者に知られないものかどうかわかりません。 CSSフォルダ及びファイルを公開ディレクトリ内においた状態で、mookun2007さんのコードを書き直すと以下のようになります。 ディレクトリ構成(/var/www/htmlが公開ディレクトリ) /var/www/html/css/stylesheet.css /var/www/html/index.html /var/www/html/index.php ・index.html <link href="/index.php" rel="stylesheet" type="text/css" /> ・index.php header('Cache-Control: no-cache'); header('Pragma: no-cache'); header("Last-Modified: " . gmdate("D, d M Y H:i:s", time()) . " GMT"); header('Content-Type: text/css'); header(sprintf('Content-Length: %d;', filesize(dirname(__FILE__) . '/css/stylesheet.css'))); readfile(dirname(__FILE__) . '/css/stylesheet.css'); よろしくお願いします。
お礼
mookun2007さん ご回答、ありがとうございました。 なかなかスマートなアイデアですね。 htmlとCSSファイルの間にphpをかませるのですか。 <追加質問1> しかし、なぜCSSファイルは公開ディレクトリの外に置く必要があるのでしょうか(もちろんセキュリティ上公開ディレクトリの外に置いた方がよいことは、納得しますが。)? 私が、CSSのファイル名を隠したいのは、ウェブサイトのファイル収集ロボットを使用してCSSファイルを他のhtmlファイルごともっていかれたくない(できるだけデザインを守りたい)からですが。 <追加質問2> また、htmlファイルとCSSファイルの間にPHPファイルをかまさずに、ただ単に、htmlファイルヘッダー内のCSSファイルへのリンクを暗号化して、公開ディレクトリの直下に.htaccessをおいて、その.htaccessに <Files ~ "\.(html|php)$"> Header add Pragma "no-cache" Header set Cache-Control no-cache </Files> などと記述する方法は、不十分ですか? この場合、通常通りCSSファイルも公開ディレクトリ内に置くことになると思いますが。 よろしくお願いします。