トップページ⇒php
963コメント297KB

.htaccessの偉い人 Part3

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/04/27 15:17ID:???
↓質問する前に「必ず」以下のサイトで調べましょう。
http://httpd.apache.org/docs/
↑.htaccessの設定でアクセス拒否とかの設定はここで分かります。

厨房な質問には煽ってあげるか、デタラメな事教えてあげて下さい。
ですが、マジな質問にはマジレスしてあげて下さい。
0322nobodyさん02/10/25 23:10ID:???
>>321
<filesmatch ...>の外を全部禁止すればいい。
032332102/10/26 00:08ID:???
>>322
外を禁止するとは?
deny from all
<Files ~"\.(html?|cgi|php|txt)$">
allow from all
</Files>
としたら403になりますた(T_T)
検索エンジンでも、このタイプはどうも見つかりません。
032432102/10/26 00:28ID:???
Directory で囲むと怒られますた。
こりは .conf に書かないといかんのでしょうか?
032532302/10/26 00:41ID:9Um3zbMa
と、思ったら、
deny from all
<Files ~"\.(html?|cgi|php|txt)$">
allow from all
</Files>
で動いた感じです。有り難うございますた!
http://www.hoge.com/ だと怒られるんですね(^^;)
0326nobodyさん02/10/26 01:26ID:???
マニュアル読んで勉強しろよ
0327名無し02/10/27 06:39ID:yQlGAQqj
xreaのアクセス制限の.htaccessの設定を教えて下さい
色々調べては見たのですがエラーが出ます。

urlは  http://yyy.s20.xrea.com/ 

設定したこと↓

AuthUserFile /virtual/yyy/public_html/test/.htpasswd
AuthGroupFile /dev/null
AuthName "test"
AuthType Basic↓
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>

パーミーションは644にしています。
0328nobodyさん02/10/27 07:07ID:???
htaccessとかのドットファイルは普通httpd.confレベルで隠しておいてくれてるはずだぞ。
0329 02/10/27 08:09ID:???
てか、まずマニュアル読んでから質問しろよ。厨房めが。

http://httpd.apache.org/docs-2.0/
一部英文(英語読めないヤツが htaccess さわるんじゃねぇ。)
0330nobodyさん02/10/27 11:34ID:???
xreaはよぉ知らんけど
AuthUserFile /virtual/yyy/public_html/test/.htpasswd
↑ public_htmlの下に置くなって何度言ったらわかるんだ。
AuthGroupFile /dev/null
↑ いらない
AuthName "test"
AuthType Basic↓
require valid-user
↓ >>328のいうとおりいらない
<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>
0331 02/10/28 13:25ID:???
特定のリンクからのアクセスを
別のページへジャンプさせたいのですがよくわかりません。

それ自体を拒否する場合は↓みたいに
>>1さんのサイト先からなんとかできたのですが・・・

SetEnvIf REFERER "yahoo.com" Ref1
Order Allow,Deny
Allow from all
Deny from env=Ref1

例えばyahooからアクセスしてきた人にかぎり、
その人をまたyahooへジャンプさせるやり方がわからないわけです。

どうすれば宜しいのでしょうか?
0332nobodyさん02/10/28 14:33ID:???
>>331
mod_rewriteでぐぐってみよう。
0333 02/10/28 20:24ID:???
>>332
どうもありがとうございます。
mod_rewriteそのもの全然知らなかったので、あれから色々調べたのですが、
どうやら折れのとこのサーバーは対応していないみたいです。
何か別の方法考えます。ありがとうございました。
0334nobodyさん02/10/30 17:55ID:l2cDvWNj
BASIC認証でわからないことがあるのでご教授願えますでしょうか。

あるディレクトリに.htaccessでBASIC認証を試みたんですが、
2回もユーザ名とパスワードを要求され、
URLがhttpd.confのServerNameで指定したサーバ名に変わってしまいます。

.htaccessの内容は
AuthUserFile /xxx/xxx/xxx/.htpasswd
AuthGroupFile /dev/null
AuthName "xxx"
AuthType Basic
require valid-user
です。
誰か助けてください。よろしくお願いします。
0335nobodyさん02/10/30 18:36ID:DMe7qUok
 SetEnvIf REFERER "xxx" Lilith
 Order Deny,Allow
 Deny from all
 Allow from env=Lilith
で、直リンクを防ぐと同時に、
 SetEnvIf Accept-Language ja acceptja
 Order Deny,Allow
 Deny from all
 Allow from env=acceptja
で、日本語使用者以外を弾きたいのですが、
2つ同じ.htaccessに記述してもうまくいきません。

どちらか1つだけ記述した場合はうまくいくのですが、
2つ同時には記述できないのでしょうか?
どなたかご教授下さいますようお願いいたします。
0336nobodyさん02/10/30 18:43ID:???
>>334
その状況なら、認証しない設定にしてもURLが変わると思うがどうよ。
0337nobodyさん02/10/30 18:46ID:???
>>335=159=308=310
いいかげんマニュアル読むことを覚えろや。
033833602/10/30 18:52ID:DMe7qUok
他のは知りません
言葉遣いを覚えましょう
033933402/10/30 19:01ID:l2cDvWNj
>>336
いえ、.htaccessを除いて普通に開くとURLは変わらないです。
0340nobodyさん02/10/30 19:42ID:???
>>339
うひ、そうか。たぶん、
(1) ServerName で指定していないサーバ名でアクセス
(2) 認証してくれ
(3) 認証 OK だからコンテンツ見せてあげよう
(4) と思ったら Location: で飛ばされちゃった
(5) 飛んだ先は ServerName で指定したサーバ名
(6) 別サーバだから認証やりなおし
という流れになっとると思われ。

おかしいのは(3)→(4)のところ。こういう状況になるありがちな可能性としては、

・httpd.conf や .htaccess で Redirect なり ErrorDocument なり mod_rewrite なりで
 URL の書き換えをやってる
・http://www.example.com/hoge/ ではなく、http://www.example.com/hoge で
 アクセスした(最後のスラッシュがない)

こういうときには Apache は Location: http://${SERVERNAME}/pathname/ という
ヘッダを吐くことがある。認証の設定自体は問題ないと思うので、
このようなリダイレクトが発生する要因をつぶしてみてくらはい。

つーか、ちゃんと設定した ServerName でアクセスしてあげてください。
0341nobodyさん02/10/30 20:36ID:???
マニュアル厨が一人でレスつけてるな
答える気が無いんなら馬鹿の一つ覚え「マニュアル読め」は書くな
0342nobodyさん02/10/30 23:39ID:???
ま、ここで威張ってる奴らには聞いても無駄だから。
な?
0343nobodyさん02/11/01 04:02ID:fuUH5vbS
かなり「それ以前」な質問で申し訳ないのですが
いろいろ調べて回ったもののここ何日、一向に解決しないのでご助言下さると嬉しいです。

荒らしにあっているのでアク禁をしたいのですが
アップロードしても全ての記述に関してうんともすんとも言わないのです。
最後の行の改行、アスキーモードでのアップロード
htaccessにしたり、前に.をつけてみたり、確認しましたが
内容をDeny from allにしても、弾くどころかなにも変わりません。
(オリジナルのエラー文表示、ディレクトリ一覧表示の禁止なども試しましたがダメでした)

記述を間違っているとエラーが出ると読んだのですがそれさえも出ません。なにもファイルを置いていない状態と同じです。
ちなみにサーバ管理者は、.htaccessは使えたはず…と言っております。
なんの反応もしないと、メールで問い合わせしたのですが返答がありませんでした。

まったく無反応ということは、一体どんな理由が考えられるでしょうか。
0344nobodyさん02/11/01 11:53ID:???
>>343
ユーザ設置の.htaccessを無視する設定になってると思われ。あきらめれ。
034534302/11/01 14:31ID:???
>344
やっぱり、使えないと考えるのが自然ですよね。
ありがとうございます。
0346nobodyさん02/11/04 03:47ID:???
UserAgentにある文字列が含まれていた場合のみ
AddTypeを指定するというようなことはできるでしょうか。
SetEnvIfで環境変数を設定して、その変数によって
条件分岐させることはできないでしょうか?
0347nobodyさん02/11/04 06:11ID:???
>>344
鯖缶が使えると言ってるしなあ。どうなんだろ?
0348nobodyさん02/11/04 12:47ID:???
>>347
.htaccessのパーミッションは?
apacheはnobodyとかで動いているだろうから、htmlとかのパーミッションと合わせる
必要があると思われる。

新規作成の.htaccessだと、umaskに依存して、もしかすると220とか200とかかも...
0349nobodyさん02/11/04 17:13ID:kZ/t31JH
すみません、質問させてください。
素材系のサイトをやっているのですが、トップページ以外や素材への直リンが多くて参っています。

http://111/222/333/
http://111/222/444/
http://111/222/555/
222に.htaccessを置いて直リンを禁止したのですが、
MACを使っている人から222以下のディレクトリのページがトップから入っても見られなくなったと苦情がきました。
フレーム分割しているディレクトリが見られないみたいで、あとは見られるとのことでした。
WINでは正常に稼動しています。

2222/ に置いている.htaccessファイルは以下の通りです

AddHandler cgi-script htaccess

SetEnvIf REFERER "http://111" Lilith
Order Deny,Allow
Deny from all
Allow from env=Lilith

なにか解決策はあるでしょうか?
お手数おかけしてすみません。何かあるならばどうか知恵をお授けください。
0350nobodyさん02/11/04 19:30ID:???
ずーっと前から気になってたんだけど、Lilith って何?
0351nobodyさん02/11/04 19:35ID:???
それだけじゃアレなんで。
Referer をもとに完全なアクセス制御するのは不可能なのであきらめれ。
クライアント側は何もしなくても、途中にあるプロクシが
Referer を書き換えたり削ったりすることがあるので、最悪の解とわきまえるべし。

公開情報に直リンクされて何が悪い?
0352nobodyさん02/11/04 21:10ID:???
>>350
SetEnvIfの識別子。
任意の文字列。
0353nobodyさん02/11/04 21:42ID:???
>>352
いや、それはわかってるんだけど、任意の文字列のわりには
このスレでは>>159>>308>>310>>335>>349とやたらめったら出てくるわけで。
0354nobodyさん02/11/04 21:43ID:???
>>348
存在して、読めないと500エラーだろ。
035534702/11/05 02:26ID:???
>>348
遅レスすまん
えと、漏れは、>>343が「鯖缶が使える」と言ってるし、と言っただけで。
0356nobodyさん02/11/05 10:54ID:???
>>349
Macの人は何かセキュリティーソフトをインストールしてるのでは。
NortonとかReffererを消しちゃうソフトもあるので。
0357nobodyさん02/11/05 11:01ID:???
>>353
Refererを隠す機能などがある国産ローカルプロキシの名前。
「lilith .htaccess」をキーワードにして全言語でぐぐっても
日本語のページしか掛からないしほぼ間違いないと思われ
0358nobodyさん02/11/05 17:42ID:5Ci8Aq1y
ミケネコさんのところでお勉強してきましたが、これで正しいのか
わかりません。どなたかご教授ください。

<やりたい事>
特定のホストからのアクセスで、パスワードとIDを入力した者だけ
アクセスできる。
<記述内容>
order deny,allow
deny from all
allow from .hogehoge.co.jp

AuthUserFile /virtual/fermais/public_html/e/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter username and password"
AuthType Basic
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>

ミケネコさんのところのアクセス制限にBASIC認証を後ろにくっつけた
という書き方なんですが、これでいいのでしょうか。
一応、認証は動いてますが。
035935902/11/05 18:24ID:???
自己解決しました。

ナニ馬鹿なこと言ってたんだろう。
改行の有無なんかで躓いて・・・
0360nobodyさん02/11/07 12:14ID:OW1kfmOG
GET http://www.ff.iij4u.or.jp/./~ch2/../a/../~ch2////////2ch-logo.gif
のようなアドレスでのアクセスを蹴る事は可能でしょうか?
0361nobodyさん02/11/07 12:22ID:???
>>360
<Files>で制限する。
0362nobodyさん02/11/07 12:24ID:???
>>360
もっと詳しく
普通のURLならOKで
相対パスが入ってたらダメって事?
0363nobodyさん02/11/07 12:25ID:???
まさにそれです
0364nobodyさん02/11/07 12:49ID:???
SetEnvIf REQUEST_URI /\.\.?/ relative-path
deny from env=relative-path
036536002/11/07 13:44ID:???
>>364 有難う御座います! 出来ました。
0366nobodyさん02/11/07 13:54ID:???
Apacheのレベルで不正な相対URIによる参照は弾かれるから
意味ないと思うんだけど
>>360の例は折りたたむと
http://www.ff.iij4u.or.jp/~ch2/2ch-logo.gif
で不正でもなんでもないアクセスでしょ。
036736002/11/07 15:05ID:???
同じ内容なのに別のアドレスとしてキャッシュを見ずに、再獲得してしまう対策です。
0368nobodyさん02/11/07 15:56ID:???
厨房が HTML 内にある URL を再帰的に取得するようなスクリプトを書くと
<a href="../hoge.html"> をうまく扱えなくて ../ による相対パスが残ったりする。
こういう馬鹿ロボットがやってきて本来なら同じ URL を何度も何度も取得して
アクセスログを埋めつくすというのは、しょっちゅうあることではないけど、
まったくないわけでもない。
0369nobodyさん02/11/07 21:31ID:???
つまりこういうことだな
http://www.wdic.org/info.html
0370nobodyさん02/11/12 22:11ID:oePzQus9
i-mode以外で表示できなくする方法
htaccessでUser-Agent(ブラウザ名)に「Docomo」という文字列が
含まれていないブラウザを全部はじくということまでは、わかったんですが…
そのプラグラムがわかりません。SOSです。
0371nobodyさん02/11/12 22:56ID:???
>>370
リモートホストにdocomo.ne.jpのほうがいいぞ
037237002/11/12 23:32ID:uQ6PUjVx
>>371様
もっと、わかりやすく説明してください。
お願いいたします。m(_ _)m
0373nobodyさん02/11/13 00:04ID:???
>>372
order deny,allow
deny from all
allow from docomo.ne.jp
037437202/11/13 00:09ID:pWjchsFg
>>373
ありがとうです。助かりました。
0375nobodyさん02/11/14 16:20ID:T+vDV5fW
<LIMIT GET>
order deny,allow
deny from all
allow from .docomo.ne.jp
</LIMIT>
<Files ".*">
deny from all
</Files>

これで完璧?
0376nobodyさん02/11/14 21:41ID:???
<LIMIT>使えという嘘を広めたのは誰だ?
0377nobodyさん02/11/15 14:46ID:???
Filesも意味不明
>>372ですでに完璧だ
>>375はあほ
0378nobodyさん02/11/15 14:52ID:???
しいて文句をつけるならドメイン名で制限してるから
HostNameLookup double相当の状態になって重いということだな
IPアドレスの範囲はdocomoから公表されてるからそれ使え
http://www.nttdocomo.co.jp/p_s/imode/ip/
order allow, deny
allow from 210.153.84.0/24
allow from 210.136.161.0/24
0379aiai02/11/15 18:30ID:LyAJ0LjK
行動はものいわずして もっとも相手を納得させる忠告である
http://www.tyousa.com
0380nobodyさん02/11/15 20:16ID:???
m(_ _)m
これうぜぇ
0381nobodyさん02/11/15 23:09ID:pZG/kSP2
ドメイン名で制限するよりIPアドレスで制限した方が動作が軽くなる?

>allow from 210.153.84.0/24
>allow from 210.136.161.0/24

allow from 210.153.84.
allow from 210.136.161.

昔どっかのサイトで、こう書いてあったけどどっちでもいいのかな?
0382nobodyさん02/11/16 14:21ID:???
何を言うか。正しいのは

allow from 210.153.84.0/255.255.255.0
allow from 210.136.161.0/255.255.255.0

こうだ!(w

0383nobodyさん02/11/17 22:18ID:???
先生が教えてあげよう。
アクセス制限をするならホストで制限をするとIPアドレスに変換するDNS逆引き作業が
起きるから鯖の負担・描写にもの凄く時間が掛かる。
だから、制限をするときは必ず「IPアドレス」で!!
0384nobodyさん02/11/20 14:42ID:aDlw2kvx
BASIC認証で、認証を通っても通らなくてもユーザ名とパスワードのログを取りたいのですが、
どうしたらよいでしょうか。よろしくおながいします。
0385nobodyさん02/11/20 22:12ID:???
>>384
クライアントが送ってくるヘッダは小文字を大文字に、ハイフンをアンダーバーに
変更し、さらに頭に HTTP_ をつけた環境変数にセットされる。

Basic 認証が要求されたとき、ブラウザは認証情報を Authorization: xxxxx という
ヘッダに格納してサーバに送る。xxxxx は username:password という文字列を
Base64 でエンコードしたもの

よって、ログを取るには CGI か SSI で HTTP_AUTHORIZATION という環境変数の値を
デコードして記録すればよい。
0386nobodyさん02/11/20 22:14ID:???
補足。エラー時は ErrorDocument 401 で CGI を呼んで環境変数を記録してやればいい。
0387nobodyさん02/11/21 10:01ID:???
>>385-386
親切なレスさんくすこ。
やってみます。
038838402/11/21 11:21ID:???
試してみましたが、環境変数HTTP_AUTHORIZATIONはからのままでした。
関係ありそうな環境変数AUTH_TYPEくらいしか見当たりませんでした。
ショボーン
0389nobodyさん02/11/21 12:16ID:???
うむ、ダメですな。こちらでも確認しますた。
たぶんパスワードが含まれるのでセキュリティ上の配慮で特別扱いしてるんでしょう。

PHP ならばそのまま取得できる、っつーか、親切にデコードしてユーザ名と
パスワードに分割してくれるところまでやってくれるんですが。

mod_rewrite がヘッダの中身を環境変数に代入できるので、
これを使うことでなんとかなるかもしれません。

とりあえず、ユーザ名だけなら REMOTE_USER という環境変数で取得できるし、
特に何もしなくても Apache のアクセスログにも記録されます。
0390nobodyさん02/11/22 12:57ID:???
HTTP_AUTHORIZATIONを何も考えずに環境変数に入れると
psでだだもれになってしまうので入らないそうです
http://www.t3.rim.or.jp/~rryu/nisenise-fuhito/200104.html#2001-04-11
0391nobodyさん02/11/22 18:31ID:JgWrpTOL
>>389
PHPでは扱えるのですか。
これを期に勉強してみることにします。
重ね重ねどうもありがとうございました。
039239102/11/23 20:31ID:bk4yPgrO
>>385-386&>>389-390
PHPで記録することができますた。
どうもありがとうございました。
0393nobodyさん02/11/28 16:38ID:/+54f9kL
Iモード限定は、これだけで完璧だよね?
allow from 210.153.84.
allow from 210.136.161.
これだと、最後の.以下も含むから
他のIPで最後の84や161まで同じやつはないだろ?

0394N2002使い02/11/28 18:15ID:P+wFU03d
>>393
FOMAはシカトでつか?(´・ω・`)ショボーン
203.138.45.
0395nobodyさん02/11/28 22:26ID:xxwOu6L/
ttp://www.bx.sakura.ne.jp/~kyou/Topic/imode/
ここの「不可解な事例」に書いてある現象で、
DoCoMoの帯域じゃないのに.docomo.ne.jpなのはどういうわけなんでしょう。
しくみがいまいちよくわからんです。

ちなみにこのサイト
http://pack.soksok.jp/
を通してアクセスすると、
PCからでも.docomo.ne.jpになっちゃいます。
0396nobodyさん02/11/28 23:08ID:???
ドコモのネットワークセグメントであっても.docomo.ne.jpとは限らない。
.docomo.ne.jpであってもドコモのネットワークセグメントとは限らない。
PTRレコードをいじればいい話。DNSとはそういうもの。
その気になればfusianasanだって騙せる(DNSの設定をいじる権限があれば、の話だが)。
039739502/11/28 23:16ID:???
>>396
レスさんくすです。
PTRレコードで検索して勉強してみます。
0398nobodyさん02/11/29 13:55ID:pnw7T/xi
>>395
i-modeをPCに繋ぐってのもあるような。
0399nobodyさん02/11/29 15:24ID:???
>>386
それどころかその気になればbbs.cgiのアクセス規制さえごにょごにょ
0400nobodyさん02/11/30 15:49ID:???
400
……1日も……
0401nobodyさん02/12/01 20:42ID:???
保守
0402nobodyさん02/12/06 07:37ID:???
この .htaccess に何か構文エラーってありますかね?
500インターネットサーバーエラーが出て、サーバーの管理人に問い合わせたら、
構文エラーがあるとそうなります、って言われたんですけど…。

ErrorDocument 404 "404Error"

この1行だけです、よろしくお願いします。
0403nobodyさん02/12/06 12:23ID:???
単にErrorDocumentが使えないだけとか?
0404nobodyさん02/12/06 13:51ID:ClEQp28P
>>402
勘で発言

改行コードLFにした?
0405nobodyさん02/12/07 06:35ID:???
>403>404同点
0406nobodyさん02/12/07 22:23ID:???
あるいはhttpdにリード権限が無い。
0407nobodyさん02/12/08 10:47ID:???
その管理者に調べてもらった方が早そうだに1票。
非協力的な人なのでちっとも調べてくれませんに1票。
0408nobodyさん02/12/11 08:59ID:???
実は自作HTTPDに一票
0409nobodyさん02/12/13 02:32ID:???
CGI の出力結果中に SSI の命令文を入れておき SSI を実行させるには .htaccess を
どのように設定すればいいのですか?
要するに .cgi を CGI と SSI の両方としてパースさせる方法を知りたいです。

下のように設定しましたがただの CGI として処理されてしまいます。
上二行のみだと SSI としてだけ処理されてしまいました。

Options +Includes
AddHandler server-parsed html cgi

Options +ExecCGI
AddType text/html cgi
AddHandler cgi-script cgi
0410nobodyさん02/12/13 08:34ID:???
不可能に1票
0411nobodyさん02/12/13 10:15ID:???
Apache1では不可能。Apache2なら可能。

Options +Includes +ExecCGI
AddHandler cgi-script .cgi
AddOutputFilter INCLUDES .cgi
041240902/12/13 19:30ID:???
>>410-411
レスありがとうございます。

>>411
使っている鯖はApache1.3.27です。
やはりApache1.xでは無理でしょうか?
HyperMartを使っていたときは SSI と CGI の両方が使えてました。
そこではUnix系OS(BSDらしい)でApache1.xが動いていました。
何か特殊な設定でもしていたのでしょうか。
0413nobodyさん02/12/14 12:52ID:???
ルートの.htaccessにRedirectを設定して全てのアクセスを別の場所に転送していますが
特定のディレクトリだけは飛ばさないようにする方法って有りませんか?

RedirectMatchで出来そうな気もしますが書き方が分からないです。
0414nobodyさん02/12/14 12:55ID:???
>>413
!~
041541302/12/14 13:38ID:KH/q2u9R
RedirectMatch !~/log/ http://hoge.com/
RedirectMatch !~(/log/) ttp://hoge.com/

どちらも駄目でした。
0416nobodyさん02/12/14 14:10ID:???
>>415
!~
Added "Space" charactor.
041741302/12/14 14:59ID:KH/q2u9R
>>416
うーん、分からないです。
何処にスペースを入れればいいのでしょうか。

0418nobodyさん02/12/16 00:23ID:???
>>417
>416は気にすんな、適当なこと言ってるだけだ。
charactorとか書いてるし。
0419nobodyさん02/12/16 04:19ID:???
>>417
複数の .htaccess を設置するのは駄目?
0420nobodyさん02/12/18 12:03ID:Ax15rlG5
>>398
>i-modeをPCに繋ぐってのもあるような。
そんなことできるの?
つまり、i-modeをモデムとして使うってことかな?
0421nobodyさん02/12/18 23:19ID:Ik+eM++B
ま、こうなるとIPで弾くのはできなくなるってこった。
http://www.zdnet.co.jp/mobile/0211/21/03.html
■ このスレッドは過去ログ倉庫に格納されています