電子書籍の厳選無料作品が豊富!

.htaccessによる特定のファイルに対するアクセス制限

fc2.webで.htaccessを設定して、特定のファイル(csv)について、ブラウザからの閲覧およびダウンロード等の直接アクセスを制限したいと思っています。

アップロードしようとしているコンテンツは、index.htmlには検索窓が一つ付いていて、javascriptでcsvファイルを検索するだけのシンプルな内容です。ファイル数も全部で5つです。ローカルでは一つのフォルダの中に全部のファイルが置いてあり、意図したとおりに動いております。また、htaccessをアップしない状態では、サーバ上でも同様に機能しています。

Javascriptの改変が自力ではできないので、ファイルマネージャーからロックできる下位ディレクトリにそのファイルを移動するのではなく、他のファイルと同様、rootに置いたファイル(一つ)だけを対象にしたいのです。

このような内容のhtaccessファイルを作り、サーバにアップしてからリネームしています。
<Files ~ "\.csv$">
Deny from all
</Files>

何度もチャレンジしていますが、500internal server errorというメッセージを返してきて、index.htmlも見られません。

関連する質問かと思いますので、同時にお伺いできれば以下についてもお願いします。

できれば、ディレクトリの内容一覧が表示されたりするのを防ぐ手立ても講じたいのですが、やはり、htaccessに記述するんでしょうか。

全般的に、どうもこのhtaccessというのがよくわからないのです。
ファイルの内容も、これだけでいいのでしょうか。

わかる方にお伺いした方が速いと思い、質問させていただきました。

よろしくお願いします。

A 回答 (3件)

改めて見ると


<Files ~ "\.csv$">
Deny from all
</Files>
これも正しい記述でしたね。

index.htmlも見られない件ですが、
もしかして、.htaccessファイル作成に「Windowsのメモ帳」などをお使いでしょうか?
メモ帳でUTF-8エンコードで保存すると、データの先頭にBOMと呼ばれる3バイトのコードが付加されます。
これが.htaccessにあると500internal server errorとなります。
無料オンラインソフトのエディタであるTeraPadやEmEditorFreeでは、BOMを付加するしないをオプションで選べます。
メモ帳を使う場合は、Shift-JISで保存してアスキー転送でアップロードすればOKです。半角英数記号は、UTF-8もShift-JISも共通ですので。
おそらくこれに該当するのではないかと思います。

この回答への補足

いろいろありがとうございます。

まず、BOMですが、terapadでs-jis保存、アップロード、リネームで、index.htmlは見られるようになりました。考えもしなかった問題をご指摘いただきとても感謝しています。

csvファイルへの直接参照は確かにできないようになっており、当然と言えば当然ですが、その状態で検索を掛けると、csvファイルが参照できないため、エラーを返してきます。

したがいまして、私の狙いは、javascriptでは実現できないことが確認できました。

これから日中二カ国語共存のため、UTF-8が使えるcsv検索cgiを探そうと思います。

いろいろと勉強になりました。
本当にありがとうございました。

補足日時:2010/07/01 22:10
    • good
    • 0
この回答へのお礼

あのあとも継続的に解決方法などを探しておりまして、お礼が遅くなりました。
まだベストの解決方が見つかってはいないのですが、いろいろと勉強になりました。

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

お礼日時:2010/07/16 08:59

すみません。

JavascriptでのCSV利用でしたか。
Javascriptでは、ローカルPCにて処理が行われますので、CSVフィルがダウンロードできなくしては機能しません。
無理です。ごめんなさい。No.1の回答も忘れてください。

この回答への補足

Javascriptでは、ローカルPCにて処理が行われますので、CSVフィルがダウンロードできなくしては機能しません。

考えてみればそのとおりですね。
こういうことがわかっただけでも勉強になります。
ありがとうございました。

しかしわからないのは、どうしてindex.htmlも表示されなくなってしまうのかという点です。もしよろしければ、教えていただきたいのですが。csv検索で、同じような感じで上手い手がないものかと思案しております。

補足日時:2010/07/01 12:07
    • good
    • 0

よく行われる手段として.htaccessに次の一行を加え


AddHandler cgi-script csv
CSVファイルにCGIのハンドラーを与えます。
こうすると直接CSVファイルを参照しようとすると、500internal server errorが返され、表示されることはありません。
他のCGIからデータとして利用することは問題なくできます。

.htaccessについては、検索でいくらでも親切に解説したサイトがありますのであなたのスキルに合うサイトを検索してみてください。

この回答への補足

さっそくありがとうございます。

以下のように(.htaccessの中身全文です)加えて、アップロードして再度読み込みましたが、同様にindex.htmlは表示されず、500 Internal Server Errorと返されました。 .htaccessをリネームして無効にするとindex.htmlは表示されます。

一つ目
AddHandler cgi-script csv
<Files ~ "\.csv$">
Deny from all
</Files>

二つ目
AddHandler cgi-script csv

私が何か決定的な勘違いをしているのでしょうか?

.htaccessの解説サイトは、このファイルを作る前にいくつか探してみました。
<Files ~ "\.csv$">
Deny from all
</Files>
は、そのサイトの解説に沿って作った内容です。

補足日時:2010/07/01 11:26
    • good
    • 0

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


おすすめ情報