ジメジメする梅雨のお悩み、一挙解決! >>

はじめまして、とあるWEBデザイナーです。
会社のサイトをホスティング会社にお願いして
専用サーバーで保守管理してもらっています。
表題の件なのですが、.htaccessでアクセス制限を
かけたディレクトリの下の階層にある
ディレクトリにアクセス制限をかけてID、パスワード
を入力させるようにしたいのですが、
.htaccessについて調べてみたところ、
.htaccessはアクセス制限をかけた以下のすべての
ディレクトリが有効範囲になるため、
すでにアクセス制限有効なディレクトリに
重複して設定することは出来ない
ということが分かりました。
このようなケースの場合、ディレクトリに
アクセス制限をかけるにはどうしたら
よいのでしょうか?
CGIなどでプログラムを組むのでしょうか?
それともWebサーバー側で設定などするのでしょうか?
当方、フリーのCGIやPHPを少し改造できる程度です。
こういう場合、普通はどうされているのか、
どんな情報でもかまいませんので
お教えいただけると幸いです。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

例えば


/home/tarou/www/ 以下がドキュメントディレクトリで、かつ.htaccess有効な場合に 
http://****/member/ で一旦パスワードを入れて
http://****/member/super-member/ でもう一度別のパスワードを要求して
守秘性の高い認証を行いたいと言うことでしょうか?

私なら
http://****/member/.htaccess にてbasic認証 パスワードを6文字程度
http://****/super-member/.htaccess にてdigest認証 パスワード8文字以上にします
2回、パスワードは要求されませんが、守秘性の高い認証は出来ます。

どうしても質問どおりの事をしたいのなら
別ツリーにAliasを設定した上で、Setenvif と Satisfy all 使うしかないかな?
httpd.conf に Alias /member/super-member/ "/home/tarou/www/member/super-member/"

http://****/member/super-member/.htaccess の内容(Apache2.2系用 2.0系迄だと書式が違います)

SetEnvIf Referer "^http://www\.umasika\.com/member/" ref_ok
SetEnvIf Referer "^http://www\.umasika\.com/member/super-member/" ref_ok
# ↑これを入れないとリンクから来た人は最初のPAGEしか見れない
AuthType Digest
AuthName "super-SP area"
AuthDigestProvider file
AuthUserFile /home/tarou/.htdigest
Require valid-user
Satisfy all
# ↑これが肝
order deny,allow
allow from env=ref_ok
deny from all

Digest認証の参考URLは(英語 2.0系はurlの2.2を2.0に変えてアクセス)
http://httpd.apache.org/docs/2.2/ja/mod/mod_auth …
http://httpd.apache.org/docs/2.2/ja/programs/htd …
    • good
    • 0

#1の訂正


>httpd.conf に Alias /member/super-member/ "/home/tarou/www/member/super-member/"
これでは同じツリーですから意味無しですね

正しくは
httpd.conf に Alias /member/super-member/ "/home/tarou/super-member/"
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q.htaccessでのRewriteRuleが下層ディレクトリに効かない

現在一番上の階層にドメインを適用しており、そこでwww有りと無しを統一する為、.htaccessに以下のように記述しています。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.example\.com)(:80)?
RewriteRule ^(.*) http://example.com/$1 [R=301,L]

これで、http://www.example.com/ は http://example.com へ、
下層ディレクトリの http://www.example.com/sample/ は http://example.com/sample/ と、

上記のようにリダイレクトしてくれますが、下層ディレクトリの中に掲示板スクリプトを設置しているものがありまして、
そのディレクトリ(/bbs)の中にも、スクリプトのURL書き換えの為のRewriteRuleを記述した.htaccessを設置しています。
※このディレクトリ(/bbs)のRewriteRuleには、RewriteCond %{HTTP_HOST} は記述していません。

ここで困った事に、http://www.example.com/bbs/ にアクセスすると、そのままwwwが付いたURLがそのままアドレスバーに表示され、
www無し(http://example.com/bbs/)にリダイレクトしてくれません。
.htaccessを設置していない(RewriteRuleを記述していない)下層ディレクトリは、上層ディレクトリに記述しているRewriteRuleの継承をしてくれる為、http://example.com/sample/ のように表示(リダイレクト)されますが、上記の/bbs ディレクトリなどに対しても、上層のRewriteRule を引き継げる方法は無いでしょうか?

色々調べて、RewriteOptions inherit というのも見つけたのですが、/bbs ディレクトリの.htaccessに記述しても、
トップページ(http://example.com/)へリダイレクトされてしまい、どうすれば良いか悩んでおります。

環境は共用レンタルサーバで、
Apacheのバージョンは1.3.39 (Unix)。
httpd.confは自分では設定する事が出来ません。

上層ディレクトリのRewriteRuleを引き継げない場合、/bbs ディレクトリの.htaccessにはどのように記述すれば
www無し(http://example.com/bbs/)になるのかでも勿論構いません。

もし良い方法がありましたらご教示頂けますと幸いです。
宜しくお願いいたします。

現在一番上の階層にドメインを適用しており、そこでwww有りと無しを統一する為、.htaccessに以下のように記述しています。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.example\.com)(:80)?
RewriteRule ^(.*) http://example.com/$1 [R=301,L]

これで、http://www.example.com/ は http://example.com へ、
下層ディレクトリの http://www.example.com/sample/ は http://example.com/sample/ と、

上記のようにリダイレクトしてくれますが、下層ディレクトリの中に掲示板スクリプトを設置し...続きを読む

Aベストアンサー

rewriteのサブディレクトリとの関係については
http://www.nurs.or.jp/~sug/homep/rewrite/rewrite15.htm#sec3
が参考になるかと思います。

http://oshiete1.goo.ne.jp/qa4083790.html
にも同様の質問が有りますが
私の環境でTESTして回答したものの質問者さんのほうではうまくいっていない様子、、


人気Q&Aランキング

おすすめ情報