![]() |
| カレッヂ |
質問者 よし
投稿日 2006/8/9(水) 19:19:51
ここのサイトで配布されている認証後の振り分けCGIを使おうと思い、
書き換え使ってみましたが、ユーザー名とパスワードをいれる画面が出て来ません。
おそらく、.htaccessの設定がまずかったのかと思いましたがどこがわるかったのか
わからないので質問させていただきました。
↓は自分が書き変えたやつです。
Options -Indexes
DirectoryIndex index.cgi
AuthUserFile /ルートパス/.htpasswd
AuthGroupFile /dev/null
AuthName "password"
AuthType Basic
<Limit POST GET>
require valid-user
</Limit>
これをサーバーにアップし同じディレクトリに
↓のCGiもアップしました。
$USERNAME = $ENV{'REMOTE_USER'};
if ($USERNAME eq "") { &error("Error","このプログラムは基本認証が行われるディレクトリ内に設置してください。"); }
print "Location: ";
# ↓上から順番に処理しますので注意! (先に該当するものがあれば適用になってしまう)
# もしユーザ名が aaaなら(完全一致)
if ($USERNAME eq "aaa") { print "目的のURL"; } # アクセス先URL
# もしユーザ名が bbbなら(完全一致)
elsif ($USERNAME = "bbb") { print "目的のURL"; } # アクセス先URL
# 何も該当しない場合は
else { print "目的のURL"; } # アクセス先URL
print "\n\n";
exit;
sub error { #----------------------------------------------------------------
local (@msg) = @_;
local ($i);
print "Content-type: text/html\n\n";
print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE></TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">
</HEAD>
<body>
<h1>$_[0]</h1>
EOF
foreach $i (1 .. $#msg) { print "$msg[$i]<br>\n"; }
print <<"EOF";
</body></html>
EOF
exit;
}
.htpasswdのファイルはこれらをアップしたディレクトリよりも上の層にアップしました。
どこが違い、どう修正したら良いのかわかる方教えてください。お願いします。
【習熟度】初めて |
回答者 アン
[削除]
投稿日 2006/8/10(木) 17:32:09
AuthUserFile /ルートパス/.htpasswd の(ルートパス)部分はどう記述してありますか? 絶対パスで書かないといけませんので、使ってる人(例えばhogeさん)が プロバイダから貰ってるDocumentRootが/home/hoge/public_htmlで その上にProtectというディレクトリを作って.htpasswdを置いたなら AuthUserFile /home/hoge/Protect/.htpasswd になります。 適宜置き換えてください。 特に大文字小文字の間違いを気を付けてください。 それも大丈夫なら属性が600になってるとかASCII転送されてないとか ですかね? |
返信(回答)する
| Web裏技 |