公開したくないディレクトリをサーバーに置く方法 ※追記あり
公開したくないディレクトリの名前の頭に # をつける。
apacheで言うところのhtdocs以下に配置しつつも、httpで見られたくないディレクトリを置く方法が思いついたというか試したらできたというか。
たぶんどんなhttpdでもブラウザでも大丈夫じゃないかなって思うのだけど。URLに#がついてるとアンカーだとブラウザもhttpdも解釈するんじゃないかなーって思うんですが、どうでしょう。
試した環境がphp5.4のbuilt-in server on Windowsというアレな環境なのでもしかしたら他環境だとダメかも。
(23:21追記)
httpdの種類とバージョン、アクセスに使ったブラウザの種類とバージョンをコメントでお寄せいただければ、後日まとめたものを別エントリーとして掲載したいと思います。
(23:44さらに追記)
ちょっと気になったので、webスペースなどをお借りしているusamimi.infoにて実験お試しtelnetしてみました。
以下の4つのURLが示すリソースへtelnetでhttpをしゃべってアクセスしてみました。
- http://kid0725.usamimi.info/hashedurl/
- http://kid0725.usamimi.info/hashedurl/#hoge
- http://kid0725.usamimi.info/hashedurl/#hoge/
- http://kid0725.usamimi.info/hashedurl/#hoge/index.html
http://kid0725.usamimi.info/hashedurl/
$ telnet kid0725.usamimi.info 80 GET /hashedurl/ HTTP/1.0 Host: kid0725.usamimi.info HTTP/1.1 200 OK Date: Wed, 24 Oct 2012 14:49:04 GMT Server: Apache Last-Modified: Wed, 24 Oct 2012 14:37:05 GMT ETag: "1d-4cccf053ca640" Accept-Ranges: bytes Content-Length: 29 Vary: Accept-Encoding Connection: close Content-Type: text/html this is /hashedurl/index.html ホストとの接続が切断されました。
http://kid0725.usamimi.info/hashedurl/#hoge
$ telnet kid0725.usamimi.info 80 GET /hashedurl/#hoge HTTP/1.0 Host: kid0725.usamimi.info HTTP/1.1 200 OK Server: Apache Last-Modified: Wed, 24 Oct 2012 14:37:05 GMT ETag: "1d-4cccf053ca640" Vary: Accept-Encoding Content-Type: text/html Date: Wed, 24 Oct 2012 14:53:01 GMT X-Varnish: 109829154 Age: 0 Via: 1.1 varnish Connection: close this is /hashedurl/index.html ホストとの接続が切断されました。
http://kid0725.usamimi.info/hashedurl/#hoge/
$ telnet kid0725.usamimi.info 80 GET /hashedurl/#hoge/ HTTP/1.0 Host: kid0725.usamimi.info HTTP/1.1 200 OK Date: Wed, 24 Oct 2012 14:53:50 GMT Server: Apache Last-Modified: Wed, 24 Oct 2012 14:37:05 GMT ETag: "1d-4cccf053ca640" Accept-Ranges: bytes Content-Length: 29 Vary: Accept-Encoding Connection: close Content-Type: text/html this is /hashedurl/index.html ホストとの接続が切断されました。
http://kid0725.usamimi.info/hashedurl/#hoge/index.html
$ telnet kid0725.usamimi.info 80 GET /hashedurl/#hoge/index.html HTTP/1.0 Host: kid0725.usamimi.info HTTP/1.1 200 OK Server: Apache Last-Modified: Wed, 24 Oct 2012 14:37:05 GMT ETag: "1d-4cccf053ca640" Vary: Accept-Encoding Content-Type: text/html Date: Wed, 24 Oct 2012 13:48:18 GMT X-Varnish: 1019093268 Age: 0 Via: 1.1 varnish Connection: close this is /hashedurl/index.html ホストとの接続が切断されました。
ということでいずれの場合も /hashedurl/index.html の内容が返されました。 /hashedurl/#hoge/index.html には this is /hashedurl/#hoge/index.html とだけ書いてちゃんとサーバー上に置いてあります。もし this is /hashedurl/#hoge/index.html と表示できるような方法があれば、今回の方法は不完全ということになります。