もう1時か、
2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50 [PR]美人女性のお部屋をナマ体験[PR]  

.htaccess質問コーナー Part7

1 :Name_Not_Found:2008/03/20(木) 23:58:35 ID:???
.htaccessファイル(「分散設定ファイル」)の書き方・使い方などに関するスレです。
ドキュメント、参考サイトへのリンクなどは>>2-3辺り。

前スレ
.htaccess質問コーナー Part6
http://pc11.2ch.net/test/read.cgi/hp/1176912246/

2 :Name_Not_Found:2008/03/20(木) 23:59:02 ID:???
【Apacheドキュメント】
・ Apache チュートリアル: .htaccess ファイル
http://httpd.apache.org/docs/2.2/howto/htaccess.html
・ Apache 2.2ドキュメント
http://httpd.apache.org/docs/2.2/
・ Apache 2.0ドキュメント
http://httpd.apache.org/docs/2.0/
・ Apache 1.3ドキュメント
http://httpd.apache.org/docs/1.3/
・ Apache Trunkドキュメント
http://httpd.apache.org/docs/trunk/
・ Apache チュートリアル:認証、承認、アクセス制御
http://httpd.apache.org/docs/2.2/howto/auth.html
・ Apache モジュール mod_access(アクセス制御)
http://httpd.apache.org/docs/2.2/mod/mod_access.html
・ Apache モジュール mod_auth (認証)
http://httpd.apache.org/docs/2.2/mod/mod_auth.html
・ Apache URL Rewriting Guide (Rewrite)
http://japache.infoscience.co.jp/rewriteguide/
・ Apache module mod_rewrite  (Rewrite)
http://japache.infoscience.co.jp/japanese_1_3_6/manual/mod/mod_rewrite.html

3 :Name_Not_Found:2008/03/20(木) 23:59:33 ID:???
【参考サイト】
・ ミケネコの htaccess リファレンス
http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/
・ メモランダム MultiX.jp
http://multix.jp/html/memo/
・ futomi's CGI Cafe - .htaccessの小技編
http://www.futomi.com/lecture/htaccess/
・ .htaccess実践活用術
http://www.shtml.jp/htaccess/

【例示用ドメインについて】
質問/回答時の例として使うドメインは、例示用として用意されている
example.com、example.net、example.org、example.jpなどを使いましょう。
これに好きなサブドメインをつけて説明するのは可。(例: hoge.example.com)

4 :Name_Not_Found:2008/03/21(金) 00:01:26 ID:???
当分スレなしでもいいかと思ったんだけどなんとなく立ててみた。

5 :Name_Not_Found:2008/03/21(金) 03:31:17 ID:???
>>4
これはありがたいです。

初心者スレでも伺ったのですが、固体識別番号での
アクセス制限について聞きたい事があります‥
特定の携帯電話(主にDoCoMo)だけを入室可にしたいのです。
Basic認証だと入室の際、手間が掛かるので固体識別番号で
振り分けが出来ればなと思ってます。
しかし、そのままicc又はserを記述しても出来ませんでした。
やはり公式サイトでしか出来ないのでしょうか?

6 :Name_Not_Found:2008/03/21(金) 09:18:09 ID:???
>>5
RewriteCond %{HTTP_USER_AGENT} ser[0-9a-zA-Z][0-9a-zA-Z]
みたいなのでできね?


7 :Name_Not_Found:2008/03/21(金) 16:21:32 ID:???
>>6
レスありがとうございます
帰り次第速攻で試してみます

8 :Name_Not_Found:2008/03/21(金) 20:31:58 ID:???
携帯はいつでも識別番号吐きながら GET や POST してるわけじゃないですよ。

9 :Name_Not_Found:2008/03/21(金) 21:04:48 ID:???
>>8
知ってる。
だから>>6は、utn属性でpost/getしてきた時だけに有効。

10 :5:2008/03/22(土) 00:51:07 ID:???
度々すみません
私の固体識別番号が
serxxxxxxxxxxxxxxx(iccの場合なら、iccyyyyyyyyyyyyyyyyyyyy)だった場合、
私のみを入室可能にするにはどのように記述すればいいのですか?

.htaccessは無知でして、質問ばかりすいません。
お暇であれば回答お願いします。

11 :Name_Not_Found:2008/03/22(土) 09:07:57 ID:???
>>10
マジレスしてやろう。

ドコモの勝手サイトの場合は、端末IDを取得する場合は、必ず警告が出る。
mod_rewriteのURL書き換えで対応する場合は、サイトの入り口だけでなく
全ページで端末IDを確認するとなると、ページ遷移のたびに警告が出るって
ことだけど、それでも良いのかえ?

現実的には、mixiがやってるように、サイト入り口で端末IDで認証して、そ
れ以降は、セッションで持ち回るしかないんじゃね?


12 :Name_Not_Found:2008/03/22(土) 18:24:26 ID:???
A.html  →  B.html

B のページに行くとき、A.html経由じゃなきゃ行けないようにしたいです。
つまり、リファラが A のアドレス以外は全てアクセス拒否にしたいのですが、
このとき B.html があるディレクトリ内の .htaccessには
何て書けば良いのでしょうか

お願いします。

13 :Name_Not_Found:2008/03/22(土) 20:27:08 ID:???
age

14 :Name_Not_Found:2008/03/22(土) 21:13:40 ID:a3FnqSDt
>>11
レスありがとうございます。
毎ページで警告となると考えものになりますね‥
しかし一度試したい気にもなります。
もしよろしければ、教えて頂きたいです。
そこから工夫してみます。

ちなみに
簡単ログインプログラム(サンプル?)は持ってはいるんですが、
sendmailという未知なものが必要で避けました‥

15 :12:2008/03/22(土) 21:37:17 ID:???
自己解決しました

16 :Name_Not_Found:2008/03/23(日) 00:13:27 ID:???
>>1おつです 早速使わせていただきますね

サイトを表示した際(特定の形式のファイルを)キャッシュしないようにしたいのですが、
<Files ~ "\.(gif|xml)$">
Header set Pragma no-cache
Header set Cache-Control no-cache
</Files>
これですとOpera使用の場合にキャッシュしてしまいます
グーグル先生に聞いてみたのですが同様の質問は幾つか見つかるのですが回答が見つかりませんでした
Operaのキャッシュの挙動が特殊で、構築側での制御が無理なのでしょうか?

17 :Name_Not_Found:2008/03/23(日) 00:55:22 ID:???
>>14
User-Agentに含まれるものはSetEnvIf User-Agent
X-UP-SUBNOに含まれるものはSetEnvIf X-UP-SUBNOを使って
後はいつも通りのOrder allow,denyとAllow from env=よぉ?

>>16
mod_headerはmod_rewrite以上にインストールされている確率が低いわぁ?
キャッシュ期間の設定はmod_headerより先にやっぱりインストールされている確率が低い
mod_expiresを使うべきよぉ?
ExpiresActive On
ExpiresByType image/gif A0
ExpiresByType text/xml A0
mod_headerはHeader set Cache-Controlの方をno-cacheではなく
max-age=0にした方がよさそうよぉ?
あと他にもHeader set Expires "Sat, 22 Mar 2008 15:55:00 GMT"も
試してみる必要がありそうよぉ。


18 :Name_Not_Found:2008/03/23(日) 01:21:15 ID:???
ttp://jp.opera.com/support/search/supsearch.dml?index=82
> You can use META tags to prevent Opera from caching pages, for example:
> <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
> <META HTTP-EQUIV="Expires" CONTENT="-1">
> Opera will follow those meta tags, but using the HTTP headers is the preferred way to do this.

Expires: -1 ねぇ。

19 :Name_Not_Found:2008/03/23(日) 11:47:15 ID:???
>>12
ノートン大先生使っている場合、リファラが出ないことが多くない?

20 :Name_Not_Found:2008/03/24(月) 16:22:44 ID:???
特定のパラメータをもったURIをリダイレクトしようとしているのですが
リダイレクト先にパラメータを引き継いでしまいます。
パラメータを引き継がない方法はありますか?

【現在の設定】
RewriteEngine On

RewriteCond %{REQUEST_URI} ^/home/hoge\.cgi$
RewriteCond %{QUERY_STRING} ^id=3$
RewriteRule ^.*$ http://hogehoge/hoge/index.html [R]

21 :Name_Not_Found:2008/03/25(火) 03:28:28 ID:???
RewriteRule ^.*$ http://hogehoge/hoge/index.html? [R]
と?で終わらせると消えるってコラムに書いてあるわぁ?

22 :Name_Not_Found:2008/03/25(火) 07:26:13 ID:???
クエリーは、[QSA]を指定しなければ、消えるんじゃないのかね?

23 :Name_Not_Found:2008/03/25(火) 13:17:47 ID:???
リダイレクト先にも、消えずに、くっついて、来ます、よ。
つーか、試せばわかる話で。

RewriteEngine on
RewriteCond %{QUERY_STRING} ^q=%E7%9B%86%E3%81%AE%E7%AA%AA$
RewriteRule .* ttp://www.google.co.jp/search [R,NE]

24 :Name_Not_Found:2008/03/25(火) 16:28:25 ID:???
乳酸菌の摂り過ぎで脳ミソが腐ってしまってやがるですぅとか書こうと思ったら
ドキュメントにマジで最後を?で終わらせると消せるって書いてありやがったですっ!
ちょっと前までSetEnvで茶を濁してばかりだったのにいつの間にこんな細かいところまで
読んでやがったですかぁ!

>>22
QSAはクエリー付きのURLに置換した後さらに元のクエリーをくっつけるっぽいですぅ。

25 :Name_Not_Found:2008/03/25(火) 16:40:01 ID:QZVJ63A1
http://pc11.2ch.net/test/read.cgi/hp/1199610455/832
832 Name_Not_Found New! 2008/03/25(火) 15:43:15 ID:QZVJ63A1
TOPページ以外のページからサイトに来た場合に
強制的にTOPページに移動するようにするにはどうすればいいのでしょうか


34 Name_Not_Found sage New! 2008/03/25(火) 16:30:53 ID:???
>>832
ビルダーではちょっと厳しいので、このあたりへ行った方が早いと思います。

.htaccess質問コーナー Part7
http://pc11.2ch.net/test/read.cgi/hp/1206025115/


ということなのでよろしくお願いします

26 :16:2008/03/25(火) 21:00:10 ID:???
>>17,18
レスサンクスです 調べたところサーバにmod_headerとmod_rewriteは入っていました(mod_expiresはなし)
期間設定でなくキャッシュそのものを作らないようにしたいのですが、その場合はno-cacheのままでよさげでしょうか?
そして Header set Expires -1 も書き加えてみたのですが、相変わらずキャッシュしてしまいます…
そもそもOperaの設定自体でキャッシュ無効にしても、終了時に消えるだけでキャッシュ自体はしているようなので
キャッシュを作らないように出来ないのがOperaの現仕様なんでしょうかねえ…

27 :18:2008/03/25(火) 23:49:31 ID:???
>>26
Expires: -1 ってそんな指定教えるなよ、と思って書いただけなので -1 は忘れてください。
>>17のような HTTP-Date 形式で吐くことになってます。

mod_headers が使えるんだったら Cache-Control に no-store もつけて
Header set Cache-Control "max-age=0, no-store"
でどうでしょ。

でも>>26後半を読むと、キャッシュしてようが If-Modified-Since なしで GET をかける
動作になれば Opera にとっては「キャッシュしてないよ」なのかもしれない。

28 :18:2008/03/26(水) 00:17:42 ID:???
連投スマソ。

手元の apache で mod_headers 効かせて Firefox/2.0.0.12 で試してみたら
・Cache-Control: no-cache → リロードすると 304 Not Modified …ってキャッシュしてる
・Cache-Control: max-age=0 → 304 Not Modified
・Cache-Control: max-age=0, no-store → 200 OK
こんな感じに。

29 :Name_Not_Found:2008/03/26(水) 12:21:52 ID:???
誘導されてきますた

ロボ避けとBASIC認証を使いたいんだが、書き方は間違ってないと思うのに発動しなくて困ってる
ロボ避け用の.htaccessファイル、パス用の.htpasswdファイル、.htpassedの位置を指定するbasic認証用ファイルが必要なんだよな?
自分のPC上だと.htaccess.txtで保存されるから、アップロードしたあと.htaccessに名前変えればいいんだよな?

いまいちよく分かってないのがフルパスだからそこに原因があるのかもしれない…
ホームディレクトリまでのフルパスが /home/example1/public_html
だったら、basic認証のファイルには

AuthUserFile /home/example1/public_html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

と書けばいいってことか?
index以外の全ページに制限かけたい時は

AuthUserFile /home/example1/public_html/inde.html/.htpasswd

になる?
初歩的な質問ですまないが助言くれると助かります

30 :Name_Not_Found:2008/03/26(水) 14:10:52 ID:???
国外からの接続を切ろうとしています。
攻撃を受けたことはないので、一応の希望ということで考えています。

SetEnvIf Request_URI .* ng
SetEnvIf Accept-Language ja !ng
Order allow,deny
Allow from .jp
Allow from .net
Allow from .com
Deny from env=ng
ErrorDocument 403 /error/403.html

Accept-Language はおまじないのようなものだと思うのですが、
実際、プロキシ経由の接続が通ったようです。
これだけでは不足でしょうか。

ttp://www.cgis.biz/tools/access.php
ここからダウンロードしたhtaccessにはIPが羅列されていますが、
これをそのまま使ってもよいのでしょうか。
ずいぶん長い列ですが、これでなければならないのかと気にしています。

31 :Name_Not_Found:2008/03/26(水) 14:48:18 ID:???
>>30
apacheのhttp.confでHostnameLookupsがonになってなかったら、
Allow from .jpなんてのは使えないと思うけど、それは大丈夫?

それと、国外からのアクセスを全て拒否なら、
order deny,allow
deny from all
で、全てを拒否して、それから、
allow from 国内のISP
として、国内だけを許可するほうが良いと思うが。

32 :Name_Not_Found:2008/03/26(水) 16:35:06 ID:???
>>29
自分用語を使わずに書いてください。「index以外全ページ」が何を指すのかとか、わかりにくい。

> ロボ避け用の.htaccessファイル、パス用の.htpasswdファイル、.htpassedの位置を指定するbasic認証用ファイルが必要なんだよな?
ロボ対策+認証用の .htaccess と パスワードを書いた .htpasswdがそれぞれ1つ。

/home/example1/.htpasswd ← public_html 内には(なるべく)置かない。

/home/example1/.htaccess の内容
--
ロボ避けだかなんだかの記述がずらずら

AuthUserFile /home/example1/.htpasswd ←置いた場所
AuthName "Restricted Area"
AuthType Basic
require valid-user
--

> index以外の全ページに制限かけたい時は
<FilesMatch "^index\.(txt|pl|rb|exe|cgi|php|s?html?)$">
Order Allow,Deny
Allow from all
</FilesMatch>
みたいなのを追記して認証の制限から除外しておく。この記述だとロボットも歓迎するけど。

33 :32:2008/03/26(水) 16:36:30 ID:???
ていせい。
× /home/example1/.htaccess の内容
○ /home/example1/public_html/.htaccess の内容

34 :Name_Not_Found:2008/03/26(水) 18:04:18 ID:???
>>31
HostnameLookups off でも Allow|Deny にホスト記述があれば引こうとする。
ただ REMOTE_HOST の値を使う記述での keep-alive 時の挙動がアレ。
「一旦全拒否」は Order Allow,Deny だけで足りるよ。
マニュアルの Order ディレクティブのところ参照。

>>30
個人的には Accept-Language 見てる時点で
Order Deny,Allow
Deny from env=ng
だけでいいかなと。
その記述だと逆引き未設定なだけの国内IPは allow してもらえない。

国外をどうしても蹴りたくて、国内IPはどうしても蹴りたくないのなら
その「ずいぶん長い」のを使うのが無難かも。

35 :29:2008/03/27(木) 01:48:22 ID:???
>>32
初心者丸出しでスマソorz
レスありがとう、やってみます。

36 :30:2008/03/27(木) 02:50:45 ID:???
どうもありがとうございます。
.net と .com のプロバイダを調べるのが面倒で、
うろ覚えですが、Accept-Languageを入れておけば
とりあえず問題ないかと考えていたような気がします。
Accept-Languageだけで規制するならば、
確かにホストやIPを見る必要はなさそうですね。
容易に偽装できるのであまり役に立たないかもしれませんが…。

プロキシを使って接続するのは自分のホストを知られたくないからだろうかと思うと
無理に規制するのもどうかとは思うのですが、
なんとなく気持ちが悪いので>30のリストを使うことも考えてみます。

37 :Name_Not_Found:2008/03/27(木) 06:21:12 ID:???
JPNICの国内アドレス全部とBBQで海外と国内のプロクシ含めた国内以外全部弾けるよ うちはそうしてる

38 :Name_Not_Found:2008/03/27(木) 15:40:47 ID:???
特定のIPからの接続を許可し、かつ リクエストのHostが特定の
ものの場合だけアクセスを許可したいのですが、そのような設定は
可能ですか?

SetEnvIf Remote_Addr "127\.0\.0\.1" ok_ip
SetEnvIf Remote_Addr "192\.168\.0\." ok_ip
SetEnvIf Host "ex\.hoge\.com" ok_host

までは分かるのですが、Order以下をどのように書けばよいのか
分かりません。


39 :Name_Not_Found:2008/03/27(木) 16:18:09 ID:???
>>38
なぜにそんな面倒くさいことを・・・

order deny,allow
deny from all
allow from 127.0.0.1
allow from 192.168.0.0/24

ではダメなのか?

40 :Name_Not_Found:2008/03/27(木) 16:20:09 ID:???
どうせあいつの事だから
SetEnvIf Host . ng_host
SetEnvIf Host ex\.hoge\.com !ng_host
Order allow,deny
Allow from 127 192.168.0
Deny from env=ng_host
なんて答えを用意しやがりそうですぅw

41 :Name_Not_Found:2008/03/27(木) 16:52:16 ID:???
>>38
>Hostが特定のものの場合だけ
Virtual Hostにして、HOSTが特定のものじゃない時には別サイトを表示
すればいいのじゃまいか?

42 :Name_Not_Found:2008/03/27(木) 17:42:55 ID:???
質問です。

現在、独自ドメインでサイトを運営しています。
自分のサイトにアクセスする際に、wwwなしのアクセスをwww有りのほうへ
転送させたいと思ってます。

そこで、以下のように.htaccessファイルに記述しました。
 RewriteEngine on
 RewriteCond %{HTTP_HOST} ^(mydomain¥.com)(:80)? [NC]
 RewriteRule ^(.*) http://www.mydomain.com/$1 [R=301,L]

これで、http://mydomain.com/ へアクセスが有った場合に
http://www.mydomain.com/ に転送させようと思ったんですが、
相変わらずhttp://mydomain.com/ にアクセス出来てしまいます。

上記の記述の何が悪いのか、分かる方がいたら教えてください。

43 :38:2008/03/27(木) 17:46:41 ID:???
みなさん回答どうもです。

IPでのアクセスや、こちらが用意したHost名以外からの
アクセスを禁止したかったのですが、>>40さんの方法で
無事できました。
先に全てをNGに設定しておいて、許可する場合だけ
NGの環境変数を無くすというのは目から鱗でした。
ありがとうございました。

44 :26:2008/03/27(木) 21:23:09 ID:???
>>27
教えて頂いたものを試したら無事出来ました!どうもありがとうございました

45 :Name_Not_Found:2008/03/28(金) 01:16:36 ID:???
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
MySQL 総合 Part13 [データベース]
qsv系のスパムメール被害 qsv03 [架空請求・spam]


46 :Name_Not_Found:2008/03/28(金) 22:27:19 ID:???
>>3の後半を書いたのは無意味だったような気がしています。

>>42
前にも似たような書き方を見たから
 RewriteCond %{HTTP_HOST} ^(example\.com)(:80)? [NC]
どこのサイトでこういう書き方を教えてるのかなと気になる程度で
記述の問題ではなさそう。

・www ありのほうのドキュメントルートにそれを置いていないか
・ドメイン屋のおまけ機能のフレーム転送たら言うのが www なしのほうで効いてないか
・その他いろいろ
・日頃の行い
この辺を確認してください。

47 :42:2008/03/29(土) 14:56:20 ID:???
>>46
レスありがとうございます。

.htaccessの記述に関しては、以下のサイトで作成しました。
ttp://www.htaccesseditor.com/

>・www ありのほうのドキュメントルートにそれを置いていないか
レンタルサーバー業者からは、ドキュメントを置くフォルダを指定されていて、
wwwありとか無しとかの区別がよく分かりません。
もしかしてこの辺が問題なのかもしれないです。

とりあえず、いろいろやってみます。

48 :Name_Not_Found:2008/03/31(月) 19:12:21 ID:???
質問させて下さい。
・refererが外部サーバだった場合、トップページにリダイレクト
というのはどう書けばいいのでしょうか?
テンプレに載っているリンク先を読みましたが、
・refererによるアクセス制限で、外部サーバからの呼び出しを禁止
・あるディレクトリ(または古いサーバなど)にアクセスしたら今のサーバのトップにリダイレクト
というのは分かったのですが、両者の機能を足したやり方が分かりません。
どうか宜しくお願いいたします。

49 :Name_Not_Found:2008/03/31(月) 20:58:55 ID:???
特定のREFERERがトップページではない場合に
トップページにする方法を教えてください

50 :Name_Not_Found:2008/03/31(月) 22:20:40 ID:???
>>49
自サーバーがwww.example.comだとして、これでどうだ?
試してないから自信はないがw

RewriteCond %{HTTP_REFERER} !www¥.example¥.com
RewriteRule ^.*$ http://www.example.com/ [R,L]


51 :Name_Not_Found:2008/03/31(月) 23:18:46 ID:???
>>50
レスありがとうございます。
ちょっと今借りてるサーバーが落ちてて試せないので;;

自分のサイト
http://www.example.com/
他サイト1,2
example.jp 、example.net
他サイトが張っているリンク
http://www.example.com/hoge/

他サイトからのアクセスをhttp://www.example.com/にしたいのです。

RewriteEngine on
SetEnvIf REFERER "example.jp" Ref
SetEnvIf REFERER "example.net" Ref
RewriteCond %{Ref} !www\.example\.com
RewriteRule ^.*$ http://www.example.com/ [R,L]

こんな感じでしょうか?

52 :Name_Not_Found:2008/03/31(月) 23:34:01 ID:???
>>51
ワラタ

53 :Name_Not_Found:2008/03/31(月) 23:35:08 ID:???
>>51
何がしたいのかわからんw

54 :Name_Not_Found:2008/04/01(火) 00:44:53 ID:???
何だよ。教えてくださいよ。

微妙だから
自分のサイト
http://www.example.com/
他サイト1,2
example.jp 、example.net
他サイトが張っているリンク
http://www.example.com/hoge/
他サイトからのアクセスをhttp://www.example.com/にしたいのです。
って書いてるのに。


55 :51:2008/04/01(火) 02:54:46 ID:???
そうか!RewriteCondにRefを放り込んだらダメですよね。。w

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "example\.jp"
RewriteCond %{HTTP_USER_AGENT} "example\.net"
RewriteRule ^.*$ http://www.example.com/ [R,L]

こうかな。
まだ鯖落ち中orz

56 :Name_Not_Found:2008/04/01(火) 06:52:33 ID:DjL4NC5I
初心者スレから誘導されたので、こちらで質問させて頂きます。

トップページ以外へのアクセスをすべてトップページへ転送させたいのですが、
Refererが自分のサーバ以外の場合にしたいのです。
.htaccessを自分でも出来る限り調べましたが、Refererによる制限とリダイレクトを組み合わせる方法が分かりません。
組み合わせは出来ないのでしょうか。
どうかご教授宜しくお願いします。

57 :Name_Not_Found:2008/04/01(火) 09:03:52 ID:???
>>54
> 他サイト1,2
ってなんだよ。
参照元のことか?


58 :Name_Not_Found:2008/04/01(火) 09:55:23 ID:???
>>57
そうです。
特定の参照元からのトップ以下のアクセスは
すべてトップに飛ばしたいです。



59 :Name_Not_Found:2008/04/01(火) 14:18:04 ID:???
>>56さんと重なるかもしれないんですが

60 :Name_Not_Found:2008/04/01(火) 14:22:20 ID:???
>>56さんと重なっているかもしれません。
http://zen.example.com/http://go.example.comに転送
http://zen.example.com/abchttp://go.example.comに転送
http://zen.example.com/abc/hoge.htmlhttp://go.example.comに転送したいのですが、
どうすれば良いのでしょうか?
要するに/zen/以下のアクセスを全てhttp://go.example.comに転送させたいのです。
Redirect permanentを試してみたのですが、それだと/zen/の部分が/go/に代わるだけなので
htmlをphpに変えた場合などには有効なのですが、私がやりたいことには使えません。
ご存知の方がいれば教えていただきたいです。

61 :Name_Not_Found:2008/04/01(火) 14:37:04 ID:???
>>58
じゃ不特定の参照元から、トップ以下のページへアクセスがあった場合は、
トップに飛ばさずにそのまま見せるということでいいのか?

62 :Name_Not_Found:2008/04/01(火) 14:52:40 ID:???
HTTP_REFERER && Redirect な注文の中の人は何人いるんだろう。

>>60
zen.example.com 側で
RedirectMatch 301 .* http://go.example.com/
すれば go.examle.com の / に 301 してくれたような気がします。

63 :Name_Not_Found:2008/04/01(火) 15:02:55 ID:???
>>61
そうです。

REFERER無しの場合もそのまま見せます

64 :Name_Not_Found:2008/04/02(水) 00:56:50 ID:???
ここのうぷろだみたいに http://www.uploda.org/
音声ファイルを直リン禁止にしつつ
右クリでダウンロードできるようにするには
どうしたらいいだろ?

その辺のサンプルみてやったら
音声ファイルは左クリも右クリも駄目になった

65 :Name_Not_Found:2008/04/02(水) 08:14:41 ID:???
>>64
リファラみてるだけでしょ

66 :Name_Not_Found:2008/04/02(水) 13:07:33 ID:???
>>62
ありがとうございました!できました!感謝です。

67 :1/2:2008/04/02(水) 15:34:39 ID:???
質問です。
今現在、以下のように2つの.htaccessを使ってアクセス制限をかけているのですが、
この.htaccess(A)と.htaccess(B)を一つの.htaccessファイルに纏める事は出来ませんか?


-/public_html/─┼─.htaccess(A)
           │
           ┼─/folder/─┼─.htaccess(B)
                    │
                    ┼─保護したいファイル.html

----------------
※.htaccess(A)の内容※

# 日本人のみをアクセス許可
order deny,allow
deny from all
allow from .jp
allow from .bbtec.net #Yahoo BB
allow from .il24.net #Interlink



68 :2/2:2008/04/02(水) 15:35:12 ID:???
※.htaccess(B)の内容※

#ブラックリスト
order allow,deny
allow from all
deny from ***.***.jp
deny from ***.***.il24.net


----------------
検索をかけても他のページばかりが引っ掛かり、
目的の情報が見つからず途方に暮れています…。宜しくお願いします。

69 :Name_Not_Found:2008/04/02(水) 15:47:22 ID:???
.htaccessって
<Directory>
は使えなかったっけ?

70 :Name_Not_Found:2008/04/02(水) 16:03:42 ID:???
>>67-68
それでは(A)を読んだ後で(B)を読んだ時に(B)にOrder, Allow, Denyの
いずれかのディレクティブが現れた時点で(A)のアクセス制限が
解除されてしまうですぅ。
ですから(B)の方に(A)のAllowをくっつけるという事になるんでしょうけど、
Orderがallow,denyの時はDeny from allの、deny,allowの時はAllow from allの
意味を持つという基本かつWebサーバのドキュメント以外で説明されているところを
見たことが無い動作を使って
Order allow,deny
Allow from .jp
Allow from ...
Deny from ***.***.jp
Deny from ***.***
と書けばうまくくっつくです。

>>69
.htaccessが<Directoryで囲まれている部分の中身のようなものですぅ。
厳密には解析される順序が違うですけど。

71 :Name_Not_Found:2008/04/02(水) 16:35:49 ID:???
公式のドキュメント以外で s/(allow|deny) from all$//ig; な話が
一番たくさん書かれてるのは歴代のこのスレかもしれない。

72 :67-68:2008/04/02(水) 18:06:44 ID:???
>>70
教えて頂いた方法で上手く行きました。
ありがとうございました!

海外弾きを入れる前まではOrder allow,denyだけを使って弾いていて、
階層別に記述した.htaccessも何となく上手く行っていたので
解答が得られなかった場合はそのままで行くつもりだったのですが、
すでに落とし穴に嵌っていたのですね…。
早めに気付けて良かったです。本当に助かりました。

73 :Name_Not_Found:2008/04/02(水) 22:07:06 ID:???
>>65
特に細工しなくてもできるってことか
じゃ使ってるXREA鯖の仕様の問題かな

74 :74:2008/04/03(木) 04:35:59 ID:???
/home .htaccess1(検索避け+jp他日本ドメイン許可・ロボテキ参照可)

├─/hoge 403等エラードキュメント用ファイル

├─/dir_1/index.html (リンク等でここにアクセス多々有)
│  │   .htaccess2(検索避け+jp他日本ドメインok・403エラーメッセージ指定)
│  │
│  ├─/dat
│  │
│  └─/img  .htaccess3(reffererが自サイトの時だけ表示を許可) 

└─/dir_2 

おおまかにこのような状態です。続きます


75 :74続きです:2008/04/03(木) 04:38:37 ID:???
■.htaccess1の内容(検索避け+jp他日本ドメイン許可・ロボテキ参照許可)
SetEnvIf User-Agent "××bot" shutout
SetEnvIf REFERER "http://www.××.jp" shutout 
  :
order allow,deny
allow from .jp
allow from .××.net
  :
deny from env=shutout
deny from ××.net
  :
<Files robots.txt>
order deny,allow
allow from all
</Files>

■/dir_1/index.html ←最もアクセスされるディレクトリ
に設置する.htaccess2の内容(検索避け+jp他日本ドメインok・403エラー指定)

(.htaccess1と同じものを書いた上で)
deny from env=shutout
deny from ××.net
  :   の後に
ErrorDocument 403 /home/hoge/403.html

<Files robots.txt>以下は削除

この1と2のように、多重に少しずつ違う.htaccessを置くことは
避けたほうが良いのでしょうか?
回線のせいか自分では非常に重くなったと感じませんが、サーバに大きな負担になるものでしょうか。

76 :Name_Not_Found:2008/04/03(木) 12:56:04 ID:???
/d/.htaccess
/d/d/.htaccess
/d/d/d/.htaccess
/d/d/d/d/.htaccess
/d/d/d/d/d/.htaccess
/d/d/d/d/d/d/.htaccess
/d/d/d/d/d/d/d/.htaccess
/d/d/d/d/d/d/d/d/.htaccess
という.htaccessがある状態で
/d/d/d/d/d/d/d/d/page.html
へアクセスした時は結構遅滞する感じがあるですけど、2〜3階層程度なら
今のサーバなら問題ないレベルだと思うですぅ。
もちろん
/d1/.htaccess
/d2/.htaccess
   :
/d100/.htaccess
のように同じ階層でもたくさんあるとディスクキャッシュから落ちた分を
読み込みなおす分の遅滞が起きやすくなるですぅ。

77 :74:2008/04/03(木) 14:22:10 ID:???
>>75
なるほど、あまりにも多重にならなければ
現在ではそんなに差がないのですね。

読み直す分の遅延、という点のほうを気をつけることにします。
ありがとうございました。

78 :Name_Not_Found:2008/04/03(木) 17:58:00 ID:???
ダウンローダほんとうざいな。偽装してもバレバレだっつうの
http://news23.jeez.jp/img/imgnews25685.png


79 :Name_Not_Found:2008/04/03(木) 23:39:27 ID:???
29でBASIC認証について質問した者です
おかげで思い通りに設置出来ました。ありがとう。
すみませんがまた質問をさせてください。

設置は出来たんだけど、今度は何故か正しいPASSを入力しても中に入れないんだ…
普通に.htpasswdにIDとPASS書いたんだけどな。
PASSはネット上の暗号化ツールを利用させてもらって暗号化しましたし…。
何度も試してるんだけど何が良くないんだろう…
何か思い当たる原因などあるでしょうか。


80 :Name_Not_Found:2008/04/04(金) 12:09:42 ID:???
このスレでは.htpasswdの質問まで受け付けてくれるのでしょうか?
.ht*関連対応かという、スレに挙がる質問全般についての疑問です

スレタイ".htaccess"に忠実なのか、意外とファジーなのか
今後質問する際の参考にしたいと思い質問させてください

81 :Name_Not_Found:2008/04/04(金) 16:37:31 ID:fWriW/iS
ErrorDocumentの後ろにQUERY_STRINGつけて飛ばしたいんだけど、
どうやればいいの?

こんな感じのことしたい
ErrorDocument 401 /404.php?%{QUERY_STRING}

82 :Name_Not_Found:2008/04/04(金) 16:48:31 ID:???
解決しました

83 :Name_Not_Found:2008/04/04(金) 18:50:49 ID:???
>>81>>82

>>79
考えられる原因は
・改行とかパーミッションとか
・諸事情でパスワードの暗号化方式に種類があって(以下略
・.htpasswd が AuthUserFile で指定された場所に、ない ←たぶんこれ。

今まで同じ質問が来るたびに ID=nanasi / PW=aaaa 時の記述・数パターンを提示しても
「全部通りません」が大半なので、暗号化にミスって云々の可能性は低そうです。
配置確認用のCGIでも書いておけば、スレで使い回せるのかな。

>>80
単に正規表現の話になってたり RFC2616 の話をしてたりするぐらいの忠実さです。
.htpasswd の質問はここでいいと思うけど /usr/sbin/htpasswd の質問がどうなるかは不明。

84 :Name_Not_Found:2008/04/04(金) 21:47:15 ID:???
AuthUserFileが読めない時はInternal Server Errorになるから
Authorization Requiredが返ってくるならAuthUserFileの
中身の問題になるわぁ。

$apr1$で始まるMD5ハッシュと{SHA}で始まるSHAハッシュ以外は
サーバのOS依存になるわぁ。
パスワードをそのまま平文で登録する→Windows, BeOS, NetWare? のみ
OS付属の関数でハッシュ化する→上の3種以外のOSのデフォルトで通常はDESが使われる
htpasswd以外での暗号化ツールのほとんどはDESによるものだから
Windows上でちょっと実験用にというときにパスワードが通らなかったりするわぁ?

85 :83:2008/04/04(金) 22:10:31 ID:???
> AuthUserFileが読めない時はInternal Server Errorになるから

「あれっ、勘違いしてた?」と思いながら試してみたら

AuthType Basic
AuthName "test area"
AuthUserFile /dev/urandom/.htpasswd
Require valid-user

401 の進呈を受けました。うーん。

86 :Name_Not_Found:2008/04/05(土) 00:53:04 ID:???
「あれっ、勘違いしてた?」と思って探してみたら、ファイルが読めなくても
Authorization Requiredが返る条件があるわぁ。
Authorization Requiredが返ったからファイルが読めていると勘違いされた方々には
深くお詫び申し上げますわぁ。

87 :79:2008/04/05(土) 12:28:57 ID:???
>>83-86
返答ありがとうございます!
Authorization Requiredが返ってきてます
つまりは

AuthUserFile /xxx/eample/.htpasswd

の部分の記述がおかしい可能性が高いってことでしょうか。
指定場所は今ので合ってるつもりなんだけど…、うーん…
とりあえず、色々やってみます。レスありがとうございました!

88 :79:2008/04/05(土) 12:53:18 ID:???
解決しました!!

配置指定にpublic_htmlが足りなかっただけのようで。
何やら稚拙な質問ばかりしてしまいすみません。
反応くださった方々、本当にありがとうございました!
スレ汚し失礼しました!

89 :Name_Not_Found:2008/04/05(土) 14:12:50 ID:???
                           ヽ
              _,,.,、、,.ィ-- ti- 、、、....,,,,_   ',
         ,,..、、ri':'゙/~   レ     '  ゙ヘ:l : : : :~,>
   _,...r:::''"::/ l/ .l:/-=ニ二,'_ー- 、、   !l!;: r '"
'''<:::::::::::::;、r'          `'' ‐-`.、 /
-、 l::::::::::::l           <"゙'i;ソ'   ',
~.ヽ l:::::::::::l             ~'     '、
/ .) .l::::::::::!                    '、
 ヽ .l:!l:::::l ヽ                  '、
\ '  l! l::!l! ヽ                    ,'
  ゙    ヾ               ‐'" ,. r ゙
ー-‐i               ,.r,,iilll鬚髯ヲ    そんなに何も見えてないんじゃ
.   l            `''' ‐‐ ---t‐'     
 ̄ ̄ ̄ ̄ ̄ ̄~"''、' ‐ 、       ー‐ノ      生きてても面白くないでしょう
             ',  ヽ       l
               l   l       l
              l    l     ノ


90 :Name_Not_Found:2008/04/05(土) 14:39:20 ID:???
しかしなんだな。文末に!を連発されると、なんかこう.....

91 :Name_Not_Found:2008/04/05(土) 18:30:41 ID:???
若いっていいじゃないか┐(´ー`)┌フッ

92 :Name_Not_Found:2008/04/05(土) 18:49:16 ID:???
すみません。
ファイルの一覧表示を禁止し、エラーページを表示出来るようにするために

Options -Indexes
ErrorDocument 401 error/401.html
ErrorDocument 403 error/403.html
ErrorDocument 404 error/404.html
ErrorDocument 500 error/500.html

という記述をしたのですがどうにもこうにもインターネットエラーになってしまいます。

93 :Name_Not_Found:2008/04/05(土) 20:48:07 ID:???
>>92
Options は使える環境?
レンタルサーバだと Options が使えない場合があるよ

.htaccess の最後の行は改行してる?

94 :Name_Not_Found:2008/04/05(土) 21:25:56 ID:???
>>92
こういうときは、1行ずつ試してみるものさ

95 :Name_Not_Found:2008/04/06(日) 10:50:24 ID:???
.jpと.bbtec.netなど日本のプロバイダ限定にしています。
今まではそれで海外や串からのアクセスを弾けていたのに
昨日中国のIPが入ってきました。韓国など他のIPは弾けています。
.cnをいれても中国IP(変動)だけが弾けません。特別な方法などありますか?

宜しくお願いします。

96 :Name_Not_Found:2008/04/06(日) 11:24:49 ID:???
1) deny,allow
2) allow,deny
の書いている順序は上記どちらになっていますか?

過去ログをさかのぼれば分かると思いますが、
上記の順序によっては設定が筒抜けになっているのかもしれませんね

97 :Name_Not_Found:2008/04/06(日) 12:59:04 ID:???
95です。レスありがとうございます。

deny,allowになっています。他の国は弾けているんですけどね…

98 :Name_Not_Found:2008/04/06(日) 13:11:10 ID:???
何度もすみません。記述の仕方はこうです。↓

Order Deny,Allow
Deny from all
Allow from .bbtec.net
Allow from .jp

99 :Name_Not_Found:2008/04/06(日) 15:01:31 ID:???
APNIC

100 :Name_Not_Found:2008/04/06(日) 16:53:55 ID:???
>>93
さくらインターネットなのでOptions使えないみたいでした。。

ErrorDocument単独でやってみたのですがそれもできませぬ・・・。
うーん、さくらインターネット。。。


ちなみに最後の行は改行してます。
一行ずつも試してみたのですが。。。

101 :Name_Not_Found:2008/04/06(日) 17:15:07 ID:???
4/1からiモードIDが導入されたのでそれを使って携帯の自動認証をしたいのですが、

RewriteEngine on
RewriteRule ^(.*)$ $1?guid=on

SetEnvIf HTTP_X_DCMGUID "*******" mypage
allow from env=mypage
deny from all

このようにhtaccessで、自動的にiモードIDをURLに付加して、認証まで終わらせる事は
可能でしょうか?
中のページ全部にguid=onとX_DCMGUIDを入れるのは大変すぎです。
ちなみに上記の記述ではuidは付加してくれないし、読み込んでもくれません(涙

102 :Name_Not_Found:2008/04/06(日) 17:15:39 ID:???
Options使えなきゃ一覧隠せないなぁ・・・。

あぁ、まじさくらインターネット、まじさくらインターネット。

103 :Name_Not_Found:2008/04/06(日) 17:31:39 ID:???
>>100
ttp://httpd.apache.org/docs/2.2/mod/core.html#errordocument
> URL の場合は、スラッシュで始まる (/) ローカルの web-path ( DocumentRoot からの相対パス ) か、

スラッシュで(略)らしいです。

-Indexes のほうは DirectoryIndex に 403 か 404 が返るはずのファイル名を
追加すれば、なんとなく似たような動作になります。
よくわかんなかったら0バイトの index.html でも置いとく。

104 :Name_Not_Found:2008/04/06(日) 18:40:31 ID:???
>>101
>SetEnvIf HTTP_X_DCMGUID "*******" mypage
おまい、この記述が好きだなw

105 :Name_Not_Found:2008/04/06(日) 20:15:24 ID:???
>>100
さくらでも ErrorDocument 使えますよ

設定のどこかで挫けているはずなので、以下の手順でいかがでしょう?

1) 適当なディレクトリに ErrorDocument の記述だけした .htaccess を設置
2) <アカウント名>.sakura.ne.jp/<適当なディレクトリ> へのアクセスで実験
3) 手順 2) が成功した後、独自ドメイン等でもテスト

あとは他の方のアドバイスを参考にしつつ、
さくら独自の設定でこけていると感じたらこちらへ

さくらインターネット 質問にマジレスするスレ Part15
http://pc11.2ch.net/test/read.cgi/hosting/1204808205/

106 :Name_Not_Found:2008/04/06(日) 20:17:25 ID:???
>>102
Options 使えなくてもファイルやディレクトリの一覧は隠せますよ
違うことの一覧をおっしゃっているのでしたら失礼


質問される方は質問した最初のレス番号を名前欄に入れておくと
回答側から分かりやすくてよいと思いますので参考まで

107 :Name_Not_Found:2008/04/06(日) 21:19:25 ID:???
>>103 >>105
どもっす。
相対パスでうまくいかなかったので絶対パスでやったらうまくいきましたです。
どうもよくわからんなぁ・・・、なんで相対パスが上手くいかないのか・・・。

>>106
DirectoryIndex index.html .ht
これを使ってみたら成功しました♪
回答ありがとです。

108 :Name_Not_Found:2008/04/06(日) 22:55:16 ID:???
>>104
一回使うと、特に理由がないけど、次からも同じような記述をしてしまう・・・
同じパターンで使えば、不具合箇所を探すのも楽だし。

109 :Name_Not_Found:2008/04/09(水) 10:44:37 ID:???
IEとそうでないブラウザで別の拡張子のファイルを提示、なんてことできる?

110 :Name_Not_Found:2008/04/09(水) 13:16:21 ID:???
>>109
できる。


111 :Name_Not_Found:2008/04/09(水) 23:39:15 ID:6gFkkBWp
Ubuntu 7.10 デスクトップに、 Apache/2.2.4 をインストールしてあります。
CGIとコンテントネゴシエーションの併用したいので、下記の記述をしました。

.htaccess
──────────
Options +ExecCGI +MultiViews
AddHandler cgi-script .cgi
──────────

確認用のファイル
──────────
sample.html
hello.cgi
──────────

sample.html と sample でアクセスすると sample.html が表示され、
hello.cgi でアクセスすると、hello.cgi の実行結果が表示されます。

hello でアクセスした際に、hello.cgi の実行結果が表示されることを
期待しているのですが 404 Not Found の表示となってしまいます。
(The requested URL /hello was not found on this server.)
ブラウザのキャッシュを消去して確認しても同様です。

ログには下記エラーメッセージが出力されます。
==> /var/log/apache2/error.log <==
[Wed Apr 09 23:29:26 2008] [error] [client 127.0.0.1] Negotiation: discovered file(s) matching request: /home/user/www/hello (None could be negotiated).

CGIとコンテントネゴシエーションの併用するには、他に何か必要ですか?

112 :Name_Not_Found:2008/04/10(木) 12:21:14 ID:???
>>110
どうやるの?

113 :Name_Not_Found:2008/04/10(木) 12:49:38 ID:???
mod_rewrite

114 :Name_Not_Found:2008/04/10(木) 13:52:30 ID:vDjoaP21
>>112
↓これどぞ。

RewriteCond
http://www.net-newbie.com/trans/mod_rewrite.html#RewriteCond
> リクエストの中の ``User-Agent:'' ヘッダにしたがって ホームページサイトの書き換えを行なう

Browser Dependend Content
http://japache.infoscience.co.jp/rewriteguide/#ToC25

115 :Name_Not_Found:2008/04/10(木) 14:13:57 ID:???
質問させてください

(1) RewriteCond %{REMOTE_ADDR} ^xxx\.xxx\.
で弾くのと、
(2) deny from xxx.xxx.
で弾くのと、
サーバにかかる負荷は(2)の方が若干軽いといったことはありますでしょうか?

色々と調べてみたのですが該当する記述を見つけることができず、
どこかに該当情報がありましたら教えていただけますと助かります
よろしくお願いいたします
m(_ _)m

116 :Name_Not_Found:2008/04/10(木) 14:14:34 ID:???
あるよ

117 :111:2008/04/10(木) 14:16:26 ID:???
>>111 の件、解決しました。
AddType text/html .cgi
を追加したらhello でアクセスした際に、hello.cgi の実行結果が表示された。

参考:
[Apache-Users 1451] Re: DirectoryIndex and Content Negotiation in 2.x
http://mm.apache.jp/pipermail/apache-users/2002-June/001451.html

118 :Name_Not_Found:2008/04/10(木) 14:42:15 ID:???
>>115
Deny ディレクティブがアクセス制限用のものであることからも、
RewriteCond よりは負荷は少ないと思われ。実環境で試すしかないんじゃね?

使い方では同じことできるけど、元々利用目的が違うから比較の情報はないかも。


Deny ディレクティブ
http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#deny

RewriteCond Directive
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

RewriteCond で正規表現を使わずにプチ最適化
http://norainu.net/mt/archives/2008/03/rewritecond.html

119 :Name_Not_Found:2008/04/10(木) 16:05:04 ID:???
softbank000123456789bbtec.netを規制するのだったら
2chがSoftBankBB規制する時と同じ要領でsoftbank000123を規制すればいい

softbank000123XXXXXXbbtec.net
           ↑
        ここは変動しても

softbank000123XXXXXXbbtec.net
       ↑
ホストの先頭6桁は地域固定されてるから変動しない

120 :Name_Not_Found:2008/04/10(木) 20:18:01 ID:???
質問です。

PHPを組み込んだXHTMLを動作させるためには、
必ずMIMEタイプはapplication/x-httpd-phpでないといけないのでしょうか。
できればXHTML文書としてapplication/xhtml+xmlを指定したいのですが・・・。

121 :Name_Not_Found:2008/04/10(木) 20:31:48 ID:???
>>120
IEが表示できないと思うが

ま、それはさておき、phpから、ヘッダーを出すときに、
application/xhtml+xml
を指定すればよいだけでは?

122 :120:2008/04/10(木) 20:37:16 ID:???
>>121
ごめん、どうやったらPHPからヘッダーを出すときにMIMEタイプを指定できるの?

123 :edry(えどりぃ):2008/04/10(木) 20:51:18 ID:vDjoaP21
>>122
↓これはどお? header()関数で指定するらしい。
http://oshiete1.goo.ne.jp/qa1689585.html

124 :120:2008/04/10(木) 20:54:46 ID:???
>>123
なるほど、専用の関数が用意されているんですね。
ありがとうございました。

125 :Name_Not_Found:2008/04/10(木) 21:03:16 ID:???
お前らってどうやって.htaccessについて勉強してるんだ?
なんか基礎的な文法から体系的に説明しているサイトなり書籍なりは存在しないものか。

126 :Name_Not_Found:2008/04/10(木) 21:26:17 ID:???
日本人の情報は真偽が確かじゃないからマニュアル

127 :Name_Not_Found:2008/04/10(木) 21:50:17 ID:???
>>122
phpは、スクリプト中でprintやechoが出てきたとき、ヘッダーが
送られてなかったら、勝手に
Content-type: html/text
を送るあるよ

なので、phpからhtml/text以外のコンテンツをはき出す場合は、
header
で、適切なヘッダーを送り出さないといかんのです

128 :Name_Not_Found:2008/04/10(木) 21:55:01 ID:???
>html/text

129 :Name_Not_Found:2008/04/10(木) 21:57:08 ID:???
>>128
アイムソーリー、フクダソーリー
text/html
だなw

130 :edry(えどりぃ):2008/04/10(木) 22:01:03 ID:???
>>125
>>2-3辺りはスルーですか...

↓基本的にはここ見てる。
http://httpd.apache.org/docs/
http://httpd.apache.org/docs/2.2/howto/htaccess.html

見てもわかんない部分はあるので、実際に試してる。
試して分からないときは、ググる。
ググって分からないときは、質問してみる。>>111

それでも理解できないときは、もっかいググってる。
>>111>>117 で解決したのはそんな流れ。

なんだかんだ調べたり試したりしているうちに覚えるね。
習うより慣れろってことなんだと思う。

131 :125:2008/04/10(木) 22:41:37 ID:???
うーん、やっぱり体系的に説明されているものはないのか。
プログラミング言語とかXMLとかはそういうサイトなり本なりがあるのに、
なんで.htaccessに限ってないんだろうね。
不思議だ。

132 :Name_Not_Found:2008/04/10(木) 23:14:21 ID:???
>>131
.htaccessでやることは、httpd.confでできるからな。
.htaccessで探さずに、httpd.confでさがしたほうが良いかも。

133 :edry(えどりぃ):2008/04/10(木) 23:21:19 ID:???
>>131
↓これ体系的だとおもうけど。体系的ってどういうことを指してるの。
http://httpd.apache.org/docs/

もしかして解説しているサイトとか知りたいのかな。
「.htaccess 解説」でググるとそれなりにあるけど。

134 :Name_Not_Found:2008/04/10(木) 23:25:56 ID:???
>>133
「俺様のやりたいことが、すぐに見つかる」
じゃないかと

135 :Name_Not_Found:2008/04/11(金) 00:30:46 ID:???
>>125
人によって違うんだろうけど、>>126>>130に同じ。
http://localhost/manual/ で済む回答者は自分だけじゃないと思います。

・DNS 方面のお話。
・PCRE な正規表現。
・主に RFC2616。
・まだ何かありそう。

本気で解説しようとすればこんなめんどくさい事柄まで言及しないといけないから
「どっかで見たようなネタだけ」の解説サイトになりがちなのかもしれません。

(allow|deny) from all を教えて Order で「原則(許可|拒否)」が変わることを教えない
解説サイトが多いのは謎ですが。

136 :Name_Not_Found:2008/04/11(金) 03:18:48 ID:???
>>130
>>2-3辺りを時々見直す時があるけど、正直分かりにくい
すまん

137 :edry(えどりぃ):2008/04/11(金) 11:46:33 ID:???
>>132 それちょっと罠あるよね。初めにはまったw
サーバー設定ファイルと .htaccess との関係とか前提知識がないと
.htaccess に設定したものが有効にならなくて困惑する。

前提知識がないままに(正しいと思って)解説しているサイトがあるので、
>>126 のように信じられないと言われるのも仕方がないのかな。

.htaccess に関して情報を必要としているのは、サーバー管理ではなく、
レンタルサーバーとかのユーザーだろうから、>>134 の言う通りで、
何ができるかが解りやすく説明されていると、>>136 の求めているもの
になるのだと思う。

私はさくらインターネット使っているので、有志のサイトとかも参考にしてる。
http://faq.sakuratan.com/

たとえサーバー設定ファイルをいじれないユーザーであれ、ウェブサイトを
運営するなら、>>135 の挙げたことは理解している方が望ましいけれど、
正直、それは情報量が多いし深い知識が必要なので、このスレで質問をする
人が求めているものではないのかもしれないし、その見解の相違があるから
質問者と回答者の間で不毛なやりとりになってしまうこともあるのだと思う。

そんなところかな。

それらを踏まえて、このスレのテンプレをちょっと考えてみます。
いい感じで誘導できて、質問者と回答者がうまいこと話せるもの、
日曜までには素案書くよ。

このスレの住人居る? いなければ次のスレ立てるまでは面倒みるけど、
住人が居るなら、テンプレの件を気に留めておいてもらえるとありがたい。

138 :Name_Not_Found:2008/04/11(金) 13:19:05 ID:???
勉強のためずっと居座ってはいるけど、
サーバを持っているわけでないので実際にひとつ試すだけでも手間がかかり、
結果なかなか身につかないという印象はある。
アクセス制限だけでも、
書いたものが希望通りに機能しているか調べるには時間がかかることがあるし。

せっかく勉強してもサーバごとに使用が許可されていたりされていなかったり、
同じ書き方でもレスポンスが違ったりするらしいので、なおさらわかりづらい。

目的別に書かれていてわかりやすいテンプレがあればうれしいとは思います。

139 :Name_Not_Found:2008/04/11(金) 16:58:14 ID:???
>>137
お願いします。頑張ってください。

140 :Name_Not_Found:2008/04/12(土) 02:16:23 ID:???
ちょっと前から自サイトに
外国からのアクセスが非常によく来るようになりました。
これを機にアクセス制限したいと思い
解説サイトやスレなどを参考に書きましたが
これをこのままアップしていいか今ひとつ自信がないので
どなたか詳しい方、添削・採点をお願いします。
したいことは
直リン防止・日本語使用者のみ許可・jpで終わる人のみ許可・
国内の許可したいIPのみ許可・検索サイトの「百度」を弾く
です。よろしくお願いします。

#直リンを禁止する
SetEnvIf Referer "www.example.org/" Lilith
Order Deny,Allow
Deny from all
Allow from env=Lilith

#日本語以外の人を弾く
SetEnvIf Accept-Language ja Lilith
Order Deny,Allow
Deny from all
Allow from env=Lilith

#jpで終わる人だけ許可する
Order Deny,Allow
Deny from all
Allow from .jp

#国内の許可したいIPのみ許可する
order deny,allow
deny from all
allow from 国内の許可したいIP

141 :140:2008/04/12(土) 02:17:57 ID:???
すみません、長過ぎたので分けました。上の続きです。

#「百度」を弾く
SetEnvIfNoCase User-Agent "Baiduspider" shutout
SetEnvIf User-Agent "baiduspider" shutout
SetEnvIf User-Agent "Baiduspider" shutout(略)

よろしくお願いいたします。

142 :Name_Not_Found:2008/04/12(土) 02:35:06 ID:???
>>140
直リンというのが何を意味しているのでしょうか?
・検索エンジン結果からのサイトの各ページへのダイレクトリンク
・掲載している画像など、txt系ファイル以外のコンテンツファイルへのリンク
・その他

百度以外も "spider" という UA (User-Agent) を使っているところが多いので、
"baiduspider" よりも
"spider" で弾いてしまってもよいかもしれません

それ以外のことについては他の方↓のアドバイスをご参考に〜

143 :Name_Not_Found:2008/04/12(土) 02:45:00 ID:???
やってみて不具合があったら質問しろよ

144 :Name_Not_Found:2008/04/12(土) 05:39:04 ID:???
めんどくせーから俺の使ってる奴晒してやるよ

#百度
deny from 122.152.128.0/23
deny from 202.96.0.0/12
deny from 202.108.0.0/16
deny from 220.181.0.0/16
deny from 60.24.0.0/13
deny from 61.135.0.0/16
deny from asd.tj.cn
deny from bta.net.cn
deny from asianetcom.net

145 :Name_Not_Found:2008/04/12(土) 08:42:59 ID:???
>>140
deny from all
をやった時点で、それまでの設定は全て無効になっているんだがw

ちゃんころはじくなら、apacheでやるより、iptablesでやるほうがいいぞ
ttp://www.hakusan.tsg.ne.jp/tjkawa/lib/krfilter/index.jsp


146 :Name_Not_Found:2008/04/13(日) 16:45:19 ID:???
http://www.robotstxt.org/orig.html

147 :edry(えどりぃ):2008/04/13(日) 18:44:39 ID:???
>>140 直リンク以外の設定は下記でいいかと。
ドキュメントルートだとサイト全体に関わるので、まずは適当なディレクトリで試してね。
──────────↓ここから
##### Order で評価の順番とデフォルト(初期状態)の設定をする。
# 下記は Allow を先に評価し、Deny を後に評価する設定。
# デフォルトは Deny form All となるため、以降 Allow で許可したものしかアクセスできない。
# Allow で許可したアクセスのなかで拒否をしたいものは、続く Deny で拒否すること。
Order Allow,Deny

##### Allow で許可するもの
## 日本語使用者を定義(SetEnvif)して、アクセスを許可(Allow)する。
## 日本語使用者とは、ブラウザの言語設定に ja があるものを想定している。
SetEnvif Accept-Language "ja" Accept_Langage_ja
Allow from env=Accept_Langage_ja
#
## .jp ドメインのアクセスを許可する。
Allow from .jp
#
## 特定のIPアドレスを許可する。(xxxは例だよ)
Allow from xxx.xxx.xxx.xxx
#
## 日本国内のIPアドレスに関しては下記が参考になるかも。
# http://akionweb.com/archives/2005/04/post_88.shtml
# http://akionweb.com/myobjects/apache_allowjp.txt

##### Deny で禁止するもの(Allow で許可されたものを上書きして禁止する)
## 特定のIPアドレスを拒否する。(xxxは例だよ)
Deny from xxx.xxx.xxx.xxx
# 許可したものに当てはまらない百度はアクセスがないと思いますが、
# すり抜けてきたものは個別に拒否するしかないかな。
──────────↑ここまで

148 :edry(えどりぃ):2008/04/13(日) 18:51:41 ID:???
>>140 直リンクの禁止も書いてみたけど、一度にやると訳分からなくので >>147 試した後でどぞ。
>>147 に追記することを想定してます。単独では機能しないので注意してね。
──────────ここから
### 直リンクの禁止
# 直リンクとは、自分のウェブサイト以外からのリンク全てと想定しています。
# 直リンクの禁止は、リファラが自分のサイトではない場合に拒否をすることとします。
# 直リンクの禁止の例外として、直接URLを入力した場合やブックマークなどのアクセス、
# ファイアウォールやセキュリティソフトによりリファラが空の場合があることからも、
# そういったアクセスを拒否しないために、リファラが無い場合は許可とします。
# この設定は、拒否する対象をファイル名で指定するため、ページそのもの(html)や、
# 画像だけ(jpg)などを拡張子で選べます。
###
## example.com へのアクセスすべてを対象とするため ref_ng にホスト名を定義する。
SetEnvIf Host "example\.com" ref_ng
# Allow で許可したものでも直リンクさせないため、すべてのアクセスを対象とします。
# 正規表現で指定しているので . の前にはエスケープするため \ を書くこと。
#
## 自分のサイト内でのリンクを拒否しない。
# リファラが http://example.com/ で始まるなら ref_ng を未定義にする。
SetEnvif Referer "^http://example\.com/" !ref_ng
#
## リファラが無い場合(ブックマークなど)を拒否しないために ref_ng を未定義にする。
SetEnvif Referer "^$" !ref_ng
#
## 拒否する対象のファイル
# () の中に対象の拡張子を | で区切って列挙する。
# 画像の直リンクだけ拒否したいなら (gif|jpg|jpeg|png) とかね。
# 下記はありそうなもの思いついた限りで拒否対象にしてみた例。
<FilesMatch "\.(gif|jpg|jpeg|png|lzh|zip|cgi|php|html|htm)$">
deny from env=ref_ng
</FilesMatch>
──────────ここまで

149 :Name_Not_Found:2008/04/13(日) 19:08:02 ID:???
>>147
>Allow from .jp
これは、apacheのhttpd.confの設定が
HostnameLookups On
でなければ、効かないですな
ホスティングはオンになってることが多いのかな?
apacheのデフォルはoffだけど。。。

150 :edry(えどりぃ):2008/04/13(日) 22:36:59 ID:???
>>149
Allow ディレクティブでドメイン名の設定をすると HostnameLookups
の設定に関わらず二重の逆引きを行なうそうですよ。
http://httpd.apache.org/docs/1.3/mod/mod_access.html#allow
http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#allow

質問内容から質問者の知識が推し量れますので、いっぺんに何もかもを
成功させることは難しいと思いますから、とりあえず希望の設定を示し、
上手くいかない点があれば、それを掘り下げればいいかと思われ。

一発で上手くいけばしめたものですし、上手くいかなければやり直せばいいし。
回答はマターリが基本かなと。

151 :edry(えどりぃ):2008/04/13(日) 23:35:18 ID:???
>>137 ではテンプレの素案を書くって気分だったけど、
.htaccess に触れて間もない私が書くにはも少し勉強が必要だった。

スレの雰囲気を理解しつつ、6以前の過去ログにも目を通したりして
時間かけてちゃんと考え直します。

とりあえず思うのは、まとめサイトあるといいね。
レンタルサーバーとかのまとめサイトで個別に .htaccess の説明が
あったりするけど、レンタルサーバーに依存しない共通の情報あれば
使いまわしもできるだろうし。

152 :Name_Not_Found:2008/04/13(日) 23:56:07 ID:???
不特定多数の人間が編集できるようなまとめサイトを作ろうという人がいるのであれば、
.htaccess関連の情報はセキュリティ的にクリティカルなものが多いので、
アカウントを取得しなければ編集できない等の注意を払っていただければ
積極的に編集参加したいと思います

153 :Name_Not_Found:2008/04/14(月) 06:52:51 ID:uOtvAZ0q
質問です。
携帯からのアクセスは別ページに飛ばす、というのは
どうやればいいのでしょうか?
・特定のホストからのアクセスを制限
・転送
この2つを組み合わせるのが分からなくて…
個人的にも調べましたが、有用な参考サイトがあれば教えて頂けるとありがたいです。

154 :Name_Not_Found:2008/04/14(月) 08:39:57 ID:???
>>153
3キャリアにリダイレクトするだけなら、それほどでもないよ
User Agentで判別すればいい。

振り分けには、色んな場合というか条件があると思うので、それを
ちゃんとまとめて、書き換え条件を書いていけば、面倒ではあるけ
ど、難しくはないと思う。

155 :Name_Not_Found:2008/04/14(月) 08:42:43 ID:???
>>153
実験してみた?
(A) 実験用のディレクトリを掘る
(B) 実験用の .htaccess を置く
(C) 1.特定ホストのアクセス制限と 2.携帯からのアクセス転送、以上が働くことを実験すれば OK

例(1)
RewriteEngine on
--------------------(α)
# 特定のホストからのアクセスを制限
RewriteCond %{REMOTE_HOST} ^hoge\.example\.com$ [NC,OR]
# または、RewriteCond %{REMOTE_ADDR} ^10\.20\.3[1-9]\. のようにしても OK
RewriteRule ^.*$ - [F]
--------------------(α)
# 転送
RewriteCond %{Http_USER_AGENT} <携帯の User agent> [NC,OR]
RewriteRule ^.*$ http://example.com/ [R,L]

例(2)
Order Allow,Deny または Deny,Allow
<お好みで呪文をつらつらと>
deny from <特定のホスト>
例(1)の(α)部分を削除した Rewrite 分と組み合わせれば OK

参考サイトは .htaccess やアクセス制限などで検索すればゴロゴロ出てくるはず
# というか、今検索して参考になるような説明サイトがゴロゴロ見つかったんだけど…('A`)

156 :153:2008/04/14(月) 11:18:21 ID:???
>>154>>155
うわ!神が2人もいらっしゃる!本当にありがとうございます。

「.htaccess」で検索していても何処をどうすればいいか全く分からなかったのですが、
「.htaccess 携帯 振り分け」で検索したらやっと参考サイトが出てきました。
(恥ずかしながら「振り分け」というキーワードが思いつきませんでした。でもまだ自己解決したわけではありません…)

>>155さんが書いて下さったおかげで、自分が何をすればいいのかやっと分かりました。
ありがとうございます、頑張ってみます!

157 :Name_Not_Found:2008/04/14(月) 11:55:18 ID:???
携帯の振り分けの場合、User Agentを使うと、特にSoftbankは条件が面倒になる。
なので、俺は、ヘッダーのx-jphone-msnameで判別してる。
このヘッダーが存在してれば、Softbank端末として処理してる。



158 :Name_Not_Found:2008/04/14(月) 13:00:23 ID:???
■携帯電話(機器)情報サイト Mobile Guide
ユーザーエージェント(UA)について
http://mobile.np-os.net/index.php?p=ua

■各キャリアのユーザーエージェント情報
DoCoMo ユーザーエージェント情報(公式)
http://www.nttdocomo.co.jp/service/imode/make/content/spec/useragent/
au ユーザーエージェント情報(公式)
http://www.au.kddi.com/ezfactory/tec/spec/4_4.html
SoftBank ユーザーエージェント情報(公式)
http://developers.softbankmobile.co.jp/dp/tech_svc/info/useragent.php

これだけ情報があれば十分だね

159 :Name_Not_Found:2008/04/14(月) 14:57:10 ID:???
このJavaScriptと同じようなことは.htaccessで出来ますか?
リファラにhttp://www.hoge.jp/を含まないものはすべて
http://www.hoge.jp/のトップに転送したいのですが…

var address = "http://www.hoge.jp/";
if((document.referrer == "") || (document.referrer.match(address) == null)){
window.location.href = address;
}

よろしくお願いします。

160 :Name_Not_Found:2008/04/14(月) 17:06:19 ID:???
>>159
たかだか158個の過去ログもよまんのか?w

161 :Name_Not_Found:2008/04/14(月) 18:06:50 ID:???
>>159
出来ます

>>56-からを読んでも分からなければ、

1.調べたこと
2.やってみたこと
3.その他、 .htaccess について知っていること(レベル)

などを書き添えて再質問してみてください


>>160
まぁねぇ
┐(´ー`)┌

162 :edry(えどりぃ):2008/04/16(水) 00:21:49 ID:???
>>159
これでどうだろ。mod_rewrite モジュールが使えることが使用条件だけど。
適当なディレクトリで試してみて。
──────────ここから
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www\.example\.jp/ [NC]
RewriteRule .* http://www.example.jp/
──────────ここまで

163 :Name_Not_Found:2008/04/16(水) 01:43:47 ID:???
>>162
localhost で試してエラーログ見てみましょう。

164 :Name_Not_Found:2008/04/16(水) 03:00:49 ID:???
質問させて下さい

/home/example/.htaccess(A)※日本IPのみ許可&日本IPでも特定のIPやホストは拒否
/home/example/picture/.htaccess(B)※画像の直リンクを禁止
/home/example/secret/.htaccess(C)※BASIC認証(ロボ避けのための認証なのでIDとパスは公表している)

.htaccessは階層が深くなるごとに設定が上書きされてしまうとのことですが、上記のような構成では
picture、secretディレクトリは(A)のIP拒否設定は無効になっているということですよね?
それで(B)(C)にも(A)と同様のIP制限を書き加えようかと思っているのですが、(A)は60KBを超えているため
(B)(C)にも同じことを書くと負荷がすごいことになってしまいそうで不安です。
全てのディレクトリで(A)の制限を有効にし、かつそれぞれ直リンク禁止・認証を行うには
どのように記述するのが最も負荷が少なくてすむのでしょうか。

165 :Name_Not_Found:2008/04/16(水) 08:43:11 ID:???
>>164
ほんの一月ほど前にも同じような質問があったな
またおまいか?w

166 :edry(えどりぃ):2008/04/16(水) 11:20:48 ID:???
>>163
↓これ出力された。
File does not exist: /home/user/www/test/favicon.ico

そっちの環境でなんか問題があるなら、
試した環境と結果の内容書かないと言いたいことが伝わらないよ。

167 :Name_Not_Found:2008/04/16(水) 13:48:26 ID:???
>>166
言いたいことは
Request exceeded the limit of 10 internal redirects due to probable configuration error.
です。そちらの環境では壮大なループにならないんですね。

%{HTTP_REFERER} ^$ で GET / しようが RewriteCond にマッチするので
RewriteRule を適用されて内部リダイレクトされるんだけど
その結果がまた RewriteRule 適用で内部リダイレクトされてその結果がまた(ry

というのが起きる環境を書け、と言われるとは思わなかった。

168 :Name_Not_Found:2008/04/16(水) 14:07:11 ID:???
>>167
こんなじゃだめか?
RewriteRule !^/$ http://www.example.jp/ [R]
ルートじゃなきゃルートへってことで。

169 :edry(えどりぃ):2008/04/16(水) 17:26:48 ID:???
>>167
言いたいこと分かりました。
転送先のディレクトリに >>162 の .htaccess を置くとまずいよね。
ってことですね。

エラーログについては Apache/2.2.4 (Ubuntu) の環境ですが、
LogLevel debug と RewriteLogLevel 9 にしてループさせてもそれ出なかった。
プラットフォームやバージョンほか、設定次第でゴニョゴニョできるので、
みんな同じとは言えないですね。
http://httpd.apache.org/docs/2.2/logs.html

>>159 へのレスはできるかどうかだけ。"質問内容"に対する回答をしました。
> リファラにhttp://www.hoge.jp/を含まないものはすべて
> http://www.hoge.jp/のトップに転送したいのですが…

>>159 = >>163 >>167 なのかな?
>>162 を試して期待した結果でなかったのなら、何を求めているのかを改めて
質問してくれないと、何がしたいのか伝わらないよ。

もし違う人なら、>>137 でも書いたけど、質問してきた人が何を求めてるか
確認して応えないと、話が脱線して不毛なやりとりになってしまいますので、
やりとりを見ていて気になるところがあるなら、その旨書いて別途質問よろ。


170 :Name_Not_Found:2008/04/16(水) 17:58:48 ID:???
>>163==>>167 (!=>>159) です。質問はないんですよ。
「不毛なやりとり」にならないよう、以上で。

171 :Name_Not_Found:2008/04/16(水) 18:25:42 ID:???
アニヲタさん(複数?)や無駄に腰が低い人(>>27とかの人)を
最近見かけなくなったように思う
>>86ぐらいまで?

172 :Name_Not_Found:2008/04/16(水) 19:07:50 ID:???
よく分からないけど、ID出ないから
今度から名前欄に自分が最初にレスしたレス番号入れたらどうでっしゃろ?

173 :edry(えどりぃ):2008/04/16(水) 23:35:10 ID:???
>>164
おまいが >>140 であり、>>147-148 に apache_allowjp.txt 追記したんだなと思うわ。
注意として、apache_allowjp.txt の order や deny の行は追記対象としちゃだめよ。

で、.htaccess の負荷について理解したいなら、>>74-77 が参考になるけど、
http://httpd.apache.org/docs/2.2/howto/htaccess.html ぐらいは読もう。
全てを理解するなんてのは私もできてませんけど、ちゃんと読めば大体分かる。


質問の件は、(A)のアクセス制御はサブディレクトリすべてに適用されるから、
同じものを置く必要はない。けど、サブディレクトリに置いた .htaccess で
設定は上書きできるので注意が必要ということ。

(A)でBASIC認証の記述が無いなら(C)は必要で、(C)にはBASIC認証の設定書く。
でも、そのロボット避けは(A)の Deny で十分じゃないかな?

わざわざBASIC認証を使う理由があるのか疑問が残るけど、当然のことながら
(A)のサブディレクトリにある(C)にアクセスする際は、(A)+(C)を処理するし、
(A)だけよりは負荷が高くなる。
起こりえる問題は、 http://httpd.apache.org/docs/2.2/howto/auth.html

だから(A)だけ使用して、BASIC認証を使用しないのが負荷が少ないと思われ。

とりあえず、(A)は試した?

"案ずるより産むが易し"とも言うけど、そもそも(A)で問題がないか、負荷が
どれくらいかを見るべきだと思う。それで負荷高くてダメな場合はそれ以上
できないわけだし。

174 :Name_Not_Found:2008/04/17(木) 00:24:56 ID:???
>>171
質問する人以上に回答する人がいても無駄が多くなるから
>>86以降は様子見モードに切り替えることにしたわぁ。

175 :Name_Not_Found:2008/04/17(木) 01:03:54 ID:???
>>174
時々出てきてくれないと寂しいです!><(いや、けっこーマジで)

176 :Name_Not_Found:2008/04/17(木) 05:43:49 ID:???
                           ヽ
              _,,.,、、,.ィ-- ti- 、、、....,,,,_   ',
         ,,..、、ri':'゙/~   レ     '  ゙ヘ:l : : : :~,>
   _,...r:::''"::/ l/ .l:/-=ニ二,'_ー- 、、   !l!;: r '"
'''<:::::::::::::;、r'          `'' ‐-`.、 /
-、 l::::::::::::l           <"゙'i;ソ'   ',
~.ヽ l:::::::::::l             ~'     '、
/ .) .l::::::::::!                    '、
 ヽ .l:!l:::::l ヽ                  '、
\ '  l! l::!l! ヽ                    ,'
  ゙    ヾ               ‐'" ,. r ゙
ー-‐i               ,.r,,iilll鬚髯ヲ    そんなに何も見えてないんじゃ
.   l            `''' ‐‐ ---t‐'     
 ̄ ̄ ̄ ̄ ̄ ̄~"''、' ‐ 、       ー‐ノ      生きてても面白くないでしょう
             ',  ヽ       l
               l   l       l
              l    l     ノ


177 :Name_Not_Found:2008/04/18(金) 11:48:04 ID:???
変なコテより断然中身が適切な>>174が必要なんです!

178 :1:2008/04/18(金) 14:14:35 ID:???
>>172案に従ってみたらこんな名前になるのが嫌です。

>>171
無駄に腰が低いらしき人です。(ですぅ|わぁ)さんが召喚されるのはわかるんですけど、なんで自分が。

>>83-86なやりとり(かなり動揺しながら試しました)のあとは、>>103>>135だけですね。
>>135へのレス見て「いえ、お客さんはめんどくさい知識不要というのを言いたくて…」と
思ったけど自分にはよくわかんない流れになってるっぽいので、傍観者モード。

まとめサイト云々の話で、昔のことを思い出しました。
.htaccess質問コーナー Part4
http://pc8.2ch.net/test/read.cgi/hp/1128774075/628-651

179 :Name_Not_Found:2008/04/18(金) 15:20:06 ID:???
>RewriteEngine on
>RewriteRule ^(.*/)$ himmel/sora.php?id=/$1
>RewriteRule ^$ himmel/sora.php?id=/

どなたかこのコードを日本語に翻訳してください・・・。

180 :Name_Not_Found:2008/04/18(金) 15:28:32 ID:???
>>179
リライトエンジンおん

以下次号

181 :Name_Not_Found:2008/04/18(金) 17:09:21 ID:???
.htaccessなのかわからないのですが、
教えてください。
.htaccessでできないのなら、誘導していただけると助かります。

直リンクはOK 直接呼び出しNGという事は可能でしょうか?
私のサイトが
http://abc.jp/だとして

他のサイトの人がhttp://xwy.net/だとします。
このサイトの人が
<img src="http://abc.jp/abc.jpg" alt="">というタグを書き自分のサーバーに
アップした時は、画像を表示させたい。
でも、
ブラウザで
http://abc.jp/abc.jpg
っと呼び出したときは、エラーにしたいんです。

可能でしょうか?



182 :Name_Not_Found:2008/04/18(金) 17:38:40 ID:???
>>181
テンプレ>>3 の 【例示用ドメインについて】 にも記載しているとおり、
例に挙げただけでも、過去・現在・未来に存在する可能性があるため、
質問/回答時の例として使うドメインは、例示用として予約されている
example.com、example.net、example.org、example.jp などを使いましょう

これに好きなサブドメインをつけて説明するのは OK です
例) hoge.example.com

以上のことに注意しつつ質問や回答するよう次回から心がけましょう

183 :181:2008/04/18(金) 17:44:12 ID:???
>>182
申し訳ありませんでした。
引き続きわかる方がいらっしゃいましたら、お願いします。

184 :109:2008/04/18(金) 21:17:06 ID:???
確かにRewriteCondを使ったらブラウザごとに違うURIを出力できるみたいだけれど、
俺がやりたいのはコンテントネゴシエーションをしている場合のことで、
出力するURIが同一でファイルはブラウザごとに振り分けたいんだ。

具体例を出せば、ttp://kuruman.org/diary/latestになる。
これ、普段はXMLを出力しているけれど、IEのときに限ってHTMLを出力しているんだよね。
URIはどちらも全く同じなのに。
これってどう設定しているのかな?

185 :Name_Not_Found:2008/04/18(金) 21:36:52 ID:???
>>184
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} MSIE
RewriteRule latest$ - [G,L]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5\.0
RewriteRule latest$ /latest.html [L]
RewriteCond %{HTTP_USER_AGENT} (baidu|naver|spider) [NC]
RewriteRule latest$ /atom.xml [L]

186 :Name_Not_Found:2008/04/18(金) 21:38:24 ID:???
mod_rewriteについてすごく詳しく分かりやすく書かれたページを発見したんで、報告しとく。
ttp://tech.bayashi.jp/archives/entry/techweb/2007/001981.html

187 :Name_Not_Found:2008/04/18(金) 22:27:00 ID:???
>>184
RewriteCond %{HTTP_USER_AGENT} MSIE
RewriteRule !^(MSIE.*)$ /MSIE/$1 [QSA,L]

でどうだ?
UserAgentにMSIEが含まれるときだけ、/MSIE/以下を表示する。
それ以外はそのまま。

検証はしてないので、動かなかったら勘弁な。

188 :Name_Not_Found:2008/04/18(金) 22:35:38 ID:???
>>187
自己レス
RewriteRule !^(MSIE.*)$ /MSIE/$1 [QSA,L]
がおかしいね。
RewriteRule !^MSIE/(.*)$ /MSIE/$1 [QSA,L]
かなあ?

189 :edry(えどりぃ):2008/04/19(土) 16:17:55 ID:???
>>179
>>180 の第二号

URLの任意の文字0個以上と最後の/で終わるところまでを記憶し → himmel/sora.php?id=/"先ほど記憶したURLをここに展開" に書き換える。

以下次号


190 :Name_Not_Found:2008/04/21(月) 14:55:44 ID:KpnK4ald
php_flag display_errors On

AddType "text/html; charset=UTF-8" html

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z\_]+)/([0-9a-zA-Z\_]+)\.html$ mod_rewrite.php?var1=$1&var2=$2 [L]

と書きましたが、うまく表示できません。
RewriteRule の部分以外は、動作するので、RewriteRuleの構文が間違っているのでしょうか?

【サーバーの状態】
エンコード:UTF−8



191 :Name_Not_Found:2008/04/21(月) 15:08:00 ID:???
教えて君でごめんなさい。
中国、台湾、韓国を弾く設定と
refererがないとアクセスできない設定は書けたのですが、
両方を満たす.htaccessが書けません。

検索のヒントでも教えてもらえたら嬉しいです。

192 :Name_Not_Found:2008/04/21(月) 15:18:55 ID:???
>>191
.htaccessに何を書いたかを出さないとコメントしようがないと思うが

193 :Name_Not_Found:2008/04/21(月) 15:20:40 ID:???
>>190
rewrite_logを見たら、ヒントがあるかもね

194 :Name_Not_Found:2008/04/21(月) 15:45:35 ID:???
>>192
SetEnvIf Referer "^ドメイン名" ref_ok
order deny,allow
deny from all
allow from env=ref_ok



order allow,deny
allow from all
deny from .ca
deny from .fr

すいません、すいません。これは例ですが、
これを一緒に書くにはどうしたらいいでしょうか?

195 :Name_Not_Found:2008/04/21(月) 15:53:11 ID:???
>>190
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)\.html$ /info.php?var1=$1&var2=$2 [R,L]
# R(=302) つけたのは見た目をわかりやすくするだけ。

これで "/存在しないディレクトリ/存在しない.html" を叩いたらリダイレクトしてくれたし
R 抜いても /info.php?var1=$1&var2=$2 が出る。

196 :Name_Not_Found:2008/04/21(月) 16:09:17 ID:???
>>194
SetEnvIf Referer "^ドメイン名" ref_ok
Order Deny,Allow
Deny from .jp
Allow from env=ref_ok
Allow from .cn
Allow from .tw
Allow from .kr

197 :196:2008/04/21(月) 16:11:45 ID:???
ていせい。
たぶん ref_ok && denied host も deny したいだろうから、こっちの Order で。

SetEnvIf Referer "^ドメイン名" ref_ok
Order Allow,Deny
Allow from env=ref_ok
Allow from .cn
Allow from .tw
Allow from .kr
Deny from .jp

198 :Name_Not_Found:2008/04/21(月) 16:17:57 ID:???
>>194
下のallow from allで、それまでの設定が全てチャラになるよ

199 :edry(えどりぃ):2008/04/21(月) 16:31:22 ID:???
>>181
> 直リンクはOK 直接呼び出しNGという事は可能でしょうか?

許可 = リファラが空でない = 直リンク
拒否 = リファラが空である = 直接呼び出し

と仮定するなら、リファラが空の時はアクセスを許可しないようにすればOKかと。

.htaccess
──────────
Order Deny,Allow
SetEnvif Referer "^$" ref_ng
deny from env=ref_ng

# 1: Deny を先に評価し、Allow を後に評価する設定。デフォルトはすべて許可となる。
# 2: リファラが空なら、ref_ng を定義する。
# 3: ref_ng が定義されているときはアクセスを拒否する。
──────────

200 :Name_Not_Found:2008/04/21(月) 16:47:24 ID:???
>>199
質問者がそれを doc_root に置きそうなことまで考えて
<Files> 使うぐらいのエスパーカ(えすぱーか)はあったほうがいいと思う。

201 :Name_Not_Found:2008/04/21(月) 16:56:56 ID:???
>>197
ああ、そうなんですね。
ありがとうございます。
早速試してみます!

202 :edry(えどりぃ):2008/04/22(火) 00:35:39 ID:???
>>200
直リンクはOK 直接呼び出しNG とする理由次第かな。

逆のことをやりたいという状況はよくあると思いますが、今回の内容は初めてなので、
とりあえず、可能かどうかを知りたくて .htaccess で実現ができるかを質問してる
ことから、どのように実現できるかに絞って書いてみました。

魚と釣り方のどちらを求めているのかにもよりますが、魚なら >>148 のとき同様に
拡張子で対象を絞れるように追加で示せば足りますが、釣り方なら混乱を避ける為に
最小限の方法を示すことが理解が容易になると考えました。

深読みが過ぎるかなとは思いましたが、画像サーバーと考えたときに、質問者が魚を
求めていて書かれたものをそのまま使うと、余計な記述は負荷にしかならないので、
最小限の記述にしたという背景もあったりします。

さらに深読みが過ぎるかなとは思いましたが、直リンクを許可したいサイトを特定の
ものとしたいとか(ry

不毛になりそうなんで。>>150 な感じです。

203 :Name_Not_Found:2008/04/22(火) 07:36:58 ID:???
画像やFlashファイルに対してなら直呼びNGにしてる

h抜きとかで画像貼られると転送量が無駄に浪費するんで
空リファラ弾いとけばhttp://で貼られようがttp://で貼られようが403

204 :Name_Not_Found:2008/04/22(火) 12:45:45 ID:1aCMAoDZ
58.14.1.2の場合は
RewriteCond %{REMOTE_ADDR} ^\58\.14\.1\.2 [NC,OR]
と書くことができますが
58.14.0.0/15
の場合どうかけばいいのでしょうか?


205 :Name_Not_Found:2008/04/22(火) 14:45:59 ID:???
>>15
kwsk

206 :Name_Not_Found:2008/04/22(火) 18:01:09 ID:???
^58\.1[45]\.

207 :edry(えどりぃ):2008/04/22(火) 23:38:00 ID:???
>>184 ( >>109 )
とりあえず、>>184 で示したサイトでやっていることは、
シンプルなコンテントネゴシエーションだと思われ。

latest.html  = text/html
latest.xhtml = application/xhtml+xml

とかがあって、ユーザーエージェントの Accept などにより最適なものを選択して
返しているだけだろうから、コンテントネゴシエーションを利用できる環境があって
試したいなら、xhtml の文書を sample.xhtml で、html の文書を sample.html で、
同じところにおいて、ファイル名 sample でアクセスすれば確かめられる。

Firefox/2.0.0.13
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5


IE/6
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*

Firefox だと application/xhtml+xml が text/html よりも優先され .xhtml が返される。
IE だとワイルドカードで */* となっているので、Apache ネゴシエーションアルゴリズムの
2-4 で最高レベルのメディアパラメータ(text/html)を持つ .html が返されるのだと思う。
とりあえず、localhost で実際に試すと期待したとおりの結果になったよ。
拡張子を .xhtml と .html で分けとけば、大抵は Apache のデフォルトで上手く行く気がする。


コンテントネゴシエーション
http://httpd.apache.org/docs/2.2/content-negotiation.html

Apache モジュール mod_negotiation
http://httpd.apache.org/docs/2.2/mod/mod_negotiation.html

208 :edry(えどりぃ):2008/04/23(水) 09:40:27 ID:???
>>207
訂正と補足。

> とりあえず、localhost で実際に試すと期待したとおりの結果になったよ。
試したのは localhost ではなく、さくらインターネットでした。Apache/1.3.39 (Unix)

> 拡張子を .xhtml と .html で分けとけば、大抵は Apache のデフォルトで上手く行く気がする。
デフォルトってのは MIME タイプのマップのことです。
↓こういう関連付け。
> latest.html  = text/html
> latest.xhtml = application/xhtml+xml

デフォルト(または試した環境)で上手く行かない場合は、AddType ディレクティブ
でマップすればOKかと。
AddType text/html .html
AddType application/xhtml+xml .xhtml


209 :Name_Not_Found:2008/04/25(金) 11:01:43 ID:???
HTTP_RANGEにbytes=0-1048575という環境変数を吐くスパムロボットがあるのですが
何か規制する方法はないでしょうか?他の環境変数はIEと全く同じで、
普通の投稿者と違うところは、ホストが毎回変わることと海外のホストであることくらいです。

>>2のSetEnvIfには、HTTP_RANGEは、
使用できなさそうなことがあったのですが一応試してみました。
特に何の影響もなくすり抜けてきます。
今のところはCGI側で弾いているのですが、
それではどうしても負荷が余計にかかってしまい、
アクセスログにも残ってしまうのでとても迷惑しています。

試してみた.htaccessです。
一番上のOpera海外版を偽装したスパムは弾けていますが、2〜4番目はどれも無反応です。
SetEnvIf User-Agent "^Opera/9\.0 \(Windows NT 5\.1; U; en\)" deny_ua
SetEnvIf HTTP_RANGE . deny_env
SetEnvIf HTTP_RANGE "1048575" deny_env
SetEnvIf Http-Range "1048575" deny_env
order allow,deny
allow from all
deny from env=deny_ua
deny from env=deny_env

使用サーバーはさくらインターネットのプレミアムです。
日本以外のホストを弾くと言うことも出来るのですが、
海外から来ている日本人ユーザーが結構いるので規制できないで居ます。

210 :Name_Not_Found:2008/04/25(金) 13:28:24 ID:3P1p33XL
中国からの全ipを規制したいけど
何か効率のいい方法ないのかな?
ip1つづつをdenyしてるとhtaccessがすごい行になるんだけど

211 :Name_Not_Found:2008/04/25(金) 14:18:18 ID:???
deny from chankoro

212 :edry(えどりぃ):2008/04/25(金) 22:26:09 ID:???
>>209
CGI の環境変数を .htaccess で使おうとしてませんか。
おそらく試した .htaccess の2〜4番目は不要です。

SetEnvIf Range "^bytes=0-1048575$" deny_env

でマッチすると思いますので試してみてください。

213 :Name_Not_Found:2008/04/27(日) 19:05:01 ID:Cdj2fWG/
RewriteEngine on
RewriteCond %{REMOTE_HOST} \.or\.jp$ [NC]
RewriteRule ^.*$ /test.html [R=301,L]

としてますがスルーされます。
REMOTE_ADDRでipを指定した場合はうまく規制できています。
何が原因なんでしょうか?


214 :Name_Not_Found:2008/04/27(日) 19:43:30 ID:???
>>213
HostnameLookups Off
じゃね?

215 :Name_Not_Found:2008/04/27(日) 19:56:52 ID:Cdj2fWG/
レスありがとう。
httpd.confですか。レンタル鯖なのでoffされていると無理ですね。
danyで対処するようにします。

RewriteRule ^.*$ /test.html [R=301,L]
のように規制対象を任意のアドレスへdanyだと無理なんですよね。
403と連続アクセスされるとやられっぱなしなので127.0.0.1なんかに飛ばしたいんだけど。

dany でリモホを規制するかREMOTE_ADDRでこまめにipを規制するようにします。
お騒がせしました。#中国からのアクセスを国側でどうにか規制してほしいものです・・・

216 :Name_Not_Found:2008/04/27(日) 20:12:09 ID:???
>>215
dany......w


217 :Name_Not_Found:2008/04/27(日) 22:23:16 ID:???
んなめどいことやらんでもソースに<!--天安門事件-->で終了

218 :Name_Not_Found:2008/04/27(日) 22:44:10 ID:???
>>217
天才現るw

219 :Name_Not_Found:2008/04/28(月) 17:50:57 ID:psY/2XFv
         ハ,,ハ  僕、アルバイトォォ!!
        ('(゚∀゚∩_ 僕をどこかのスレに送って!
      /ヽ   〈/\ お別れの時にはお土産を持たせてね!
     /| ̄ ̄ ̄|.\/
       | モツ煮 |/
        ̄ ̄ ̄
現在の所持品:新聞、∈(・ω・)∋ダムー、ゆうパック、ダム穴、百度

220 :Name_Not_Found:2008/04/29(火) 21:25:56 ID:sS5y1L8c
超初心者ですがお願いします。
HPじゃなくて、ブログ(それも無料ブログ)で.htaccessを使って
特定のIPアドレスを制限することは可能ですか?

221 :Name_Not_Found:2008/04/29(火) 21:35:27 ID:ac7HHgMU
>>220
超初心者用スレではないにでスレ違い

222 :Name_Not_Found:2008/04/29(火) 21:42:17 ID:sS5y1L8c
そうですね・・・
でも、できれば教えてもらえませんか?

223 :Name_Not_Found:2008/04/29(火) 22:01:39 ID:???
>>222
あなたが借りているのはどこですか?

224 :Name_Not_Found:2008/04/29(火) 22:05:47 ID:ac7HHgMU
まずは人に聞く前に自分で調べる癖をつけましょう。
せっかくインターネットに繋がっていて2chだけしか利用しないのはもったいない。
君の文章から得られるキーワードは「htaccess IPアドレス 制限」

それから得られる情報は日本のサイトだけでもhtaccess IPアドレス 制限 に一致する日本語のページ 約 643,000 件

こんなにもあります。ここで聞くより643,000 件の中から自分で情報を探す方が君にとって有意義です。
その上で理解出来ない部分なんかがある場合にここなどで聞くとさらに知識が深まるのです。


225 :Name_Not_Found:2008/04/29(火) 22:06:25 ID:???
WEBに公開している以上「完全」に制限することは不可能だと常に覚えておいて下さい

226 :Name_Not_Found:2008/04/29(火) 22:27:10 ID:sS5y1L8c
みなさんヒント色々ありがとうございます。
htaccessでIPアドレスを制限する事に関するページはたくさんありますね。

ただ、初心者すぎて、HPじゃなくてブログでもそれができるかわからなかったんですが
ブログでも可能のようですね。
なんとかやってみたいと思います。

227 :Name_Not_Found:2008/04/30(水) 01:00:39 ID:???
>>212
規制されていて返答遅くなりました。
CGIの環境変数と.htaccessの環境変数は別なのですね。勉強になりました。
SetEnvIf Range "^bytes=0-1048575$" deny_env
で設定してマッチ出来たようです。
お陰でスパムの9割を規制できました。有り難うございました。


228 :Name_Not_Found:2008/04/30(水) 01:05:57 ID:???
>>226
普通に借りるようなレンタル形式のブログじゃできないよ

ってみんな教えてあげないとw

229 :Name_Not_Found:2008/04/30(水) 01:56:17 ID:???
自分で借りてるところのヘルプ見りゃ済むのにそれもしないし
じゃあ、どこなら出来ますか?とか聞かれるのがオチだろ

230 :Name_Not_Found:2008/04/30(水) 02:08:36 ID:???
そーゆー時はブログ系のスレに誘導して終了w

231 :Name_Not_Found:2008/04/30(水) 02:14:26 ID:Ah742n5q
ブログなんかで何かしようと思うのが間違い

232 :Name_Not_Found:2008/04/30(水) 07:59:08 ID:???
バカにされたー
どうせバカだけど

233 :Name_Not_Found:2008/04/30(水) 12:40:59 ID:???
ここまで while による自演

234 :Name_Not_Found:2008/04/30(水) 21:01:15 ID:He7sahYB
質問させて下さい。
携帯の特定の1機種(W54T)からのアクセスのみを弾きたいのですが、
その場合はどのように記述すればいいでしょうか?

ぐぐったところ
BrowserMatch "DoCoMo/1\.0/SO503i/c10" DoCoMo_SO

Order Allow,Deny
Allow from all
Deny from env=DoCoMo_SO

という特定機種を弾くらしい記述と

W54TのデバイスIDは「TS3E」

が出てきたので、これを利用して書き換えればいいのかと思っても
どこをどう書きかえればいいのか解りません。
自分の機種を参考に適当な書き換えも試してみましたがアクセスできてしましました。

使用サーバーはさくらです。
よろしくお願い致します。

235 :Name_Not_Found:2008/04/30(水) 21:57:57 ID:???
>>234
BrowserMatch のところを書き換えればいいじゃねーか


236 :234:2008/04/30(水) 22:17:52 ID:???
>>235
ご指摘通り、

BrowserMatch "TS3E" au_CA

Order Allow,Deny
Allow from all
Deny from env=au_CA

にしてみたら弾けました。

"DoCoMo/1\.0/SO503i/c10" のように機種番号の前後に何かいるものだとばかり……
こんなに単純だったとは orz

お手数をおかけしてすみません。本当にありがとうございました!

237 :edry(えどりぃ):2008/04/30(水) 23:30:26 ID:???
>>135
> (allow|deny) from all を教えて Order で「原則(許可|拒否)」が変わることを教えない
> 解説サイトが多いのは謎ですが。

なんか最近、同じ疑問を持ったw

deny from example.com
allow from example.com
deny from example.com
これ上から順に試したとき、最後に書いたものが機能しないと悩むとか。
だから、
Order deny,allow
Deny from all
Allow from all
たぶん、こうした方が Order が何やっているか分かりやすいのかな。

238 :164:2008/05/03(土) 19:06:10 ID:???
>>164です
お礼が遅くなってすみません

>>165,173
この板には初めてきたので人違いだと思います

(A)〜(C)は1年以上前から設置してあるのですが、最近になって
(C)のディレクトリに対するIP制限が効いていないらしいことに気付きました。
((A)には串避けの記述もしてあるのですが、その串で(C)にアクセスできてしまったので)
それで今のままでは穴があるのでは…と心配になり質問をさせていただいた次第です。
とりあえず>>173さんが示して下さったページを熟読し、それでも不明な場合は
またお邪魔させていただこうと思います。
レスありがとうございました。


239 :Name_Not_Found:2008/05/03(土) 21:13:47 ID:???
>>238
次回質問することがある時は、トリップをつければよいと思いますよ

240 :Name_Not_Found:2008/05/05(月) 13:21:27 ID:???
botと日本語環境以外のアクセスを弾きたいのですが、以下の記述で合ってますでしょうか?
鯖はさくらです。


SetEnvIf Referer "^http://example\.ne\.jp" welcome
SetEnvIf Referer "^$" welcome

SetEnvif Accept-Language "ja" Accept_Langage_ja
Allow from env=Accept_Langage_ja

SetEnvIf User-Agent "Googlebot" shutout
SetEnvIf User-Agent "Slurp" shutout
SetEnvIf User-Agent "msnbot" shutout
SetEnvIf User-Agent "spider" shutout

Order Allow,Deny
Allow from all

以下、企業や役所等のドメインが続きます

Deny from env=shutout

241 :edry(えどりぃ):2008/05/07(水) 10:24:40 ID:???
>>240
> Allow from all
これがあるため、日本語環境でははないものも許可しちゃいます。

あと、welcome は許可設定しないの?

242 :Name_Not_Found:2008/05/07(水) 11:37:03 ID:/tfusj0l
正直どこをどう弄れば良いのかサッパリ
この構文も元々はrobotとドメイン弾きの例文を改造した奴なんです

SetEnvIf Referer "^http://example\.ne\.jp" welcome
SetEnvIf Referer "^$" welcome
SetEnvif Accept-Language "ja" Accept_Langage_ja
SetEnvIf User-Agent "Googlebot" shutout
SetEnvIf User-Agent "Slurp" shutout
SetEnvIf User-Agent "msnbot" shutout
SetEnvIf User-Agent "spider" shutout
Order Allow,Deny
以下、企業や役所等のドメイン
Allow from env=welcome
Allow from env=Accept_Langage_ja
Deny from env=shutout

と書き換えてみましたが如何でしょうか?


243 :240:2008/05/07(水) 11:38:33 ID:/tfusj0l
>>240>>242でした

244 :edry(えどりぃ):2008/05/08(木) 00:50:17 ID:???
>>242 (= >>240 = >>243)
Order Allow,Deny の行が Allow と Deny の評価される順を決め、
その上でデフォルトの状態(この場合は Deny from all となる)が決まります。
http://httpd.apache.org/docs/1.3/mod/mod_access.html#order
今回は、Allow で許可したいものをまずは列挙し、その中で拒否したいものが
あれば Deny で拒否する感じになると思います。

ただ、Allow の許可はひとつを見れば目的を果たすことができますが、
複数の設定があると目的を果たせない場合があります。

> SetEnvif Accept-Language "ja" Accept_Langage_ja
これだけ見れば、日本語を利用するユーザーエージェント"のみ"を許可しようとしてる、
〉SetEnvIf Referer "^$" welcome
でも、これがあるから日本語を利用するかに関係なく、リファラが空なら許可する。

Allow での許可が or なので、どれか一つの条件が合えば許可することになります。
つぎはぎ的な内容とうことであれば、welcome のやつは特に意図があったわけでは
ないということですね。ならば、次の行は不要。
〉SetEnvIf Referer "^http://example\.ne\.jp" welcome
> SetEnvIf Referer "^$" welcome
> Allow from env=welcome

また、ロボットを弾くのも、デフォルトが Deny from all で全て拒否してる
ことから、Allow で許可した中にロボットがあった場合に Deny で拒否すれば
いいと思いますので、初めは次の三行だけで様子を見てはいかがでしょうか。

SetEnvif Accept-Language "ja" Accept_Langage_ja
Order Allow,Deny
Allow from env=Accept_Langage_ja

245 :240:2008/05/09(金) 02:27:18 ID:???
>>244
ご指摘有難う御座います。
取り敢えずその3行で様子を見てみたのですが、Docomoからのアクセスは弾くみたいです。
日本語環境且つ企業・役所・学校以外は弾きたくはない場合、
この様な感じでしょうか?

SetEnvif Accept-Language "ja" Accept_Langage_ja
Order Allow,Deny
Allow from env=Accept_Langage_ja
Allow from env=海外扱いに混ざるISPのホスト
Allow from env=携帯各社のホスト
Deny from 弾きたいIPとドメイン
Deny from env=shutout

ただjigブラウザWEB経由の場合、末尾にYahoo.co.jpが付いてしまいます。
その場合は該当するホストをAllow from env=で許可した後、
他の企業はco.jpでDeny処理で大丈夫でしょうか?

246 :edry(えどりぃ):2008/05/09(金) 12:09:02 ID:???
>>245
細かいことしようとするなら、具体的にヘッダーになにがあるのか見て、
共通する部分を見つけて、Allow なり Deny するだけ。
大丈夫かどうかってのは自分のサイトで実際に試すしかないですね。

CGIで環境変数のチェックしてくれるサイトがどっかにあるから。( http://kagetsu.biz/tool/env/ )

〉SetEnvif Accept-Language "ja" Accept_Langage_ja
これを例にすると、アクセスした際にユーザーエージェントがヘッダーの中で
Accept-Language: ja,en-us;q=0.7,en;q=0.3
としている場合に、値に「ja」が含まれているから Accept_Langage_ja が定義され、
Allow from env=Accept_Langage_ja で許可される。
だから、「ja」が含まれていなければ定義されず許可されない。
ほかにも、User-Agent とか見て判断したりするのがよくある手だと思う。

> Docomoからのアクセスは弾くみたいです。
なぜそうなるのかは Docomo の端末のヘッダー情報確かめる。

> 日本語環境且つ企業・役所・学校以外は弾きたくはない場合
やろうとしていることが複雑なので、少しずつ試すしかないかな。
Allow での許可が or という話はしましたが、Allow や Deny が増えると
条件増えた分だけ許可と拒否の関係が複雑になります。

Order と Allow と Deny の使い方としては3段階で考えるといいかも、
1. デフォルト「全て許可」「全て拒否」と Allow や Deny の評価順番をどちらにするか。
2. 必要最小限の許可・拒否をする。
3. 許可・拒否の条件を調整する。

Order ディレクティブについて理解しておかないと、どつぼにはまるので注意して読む。
http://httpd.apache.org/docs/1.3/mod/mod_access.html#order

247 :Name_Not_Found:2008/05/09(金) 14:06:09 ID:???
ここの皆には常識だと思うがいくら弾いても携帯やモバイルとかゲーム機でしつこくアクセスしてくる奴が居るからそっちのUAも弾かないと無意味だよ

248 :Name_Not_Found:2008/05/09(金) 15:47:27 ID:W4dMx6RC
すいませんよろしく御願いします

動的なurlを静的に変えるときに、
/が含まれている場合、
文字だろうがディレクトリだろうが、ディレクトリとして認識されます
文字の場合は文字だと認識させるためにはどうすればいいでしょうか。

例えばwikipediaの場合、
.htaccessに
RewriteEngine on
RewriteRule wiki/(.*)$ wiki.php?q=$1 [L]
このように記述することで、
クエリがhogeである場合、
http://ja.wikipedia.org/wiki/hoge
とすることができます

クエリがOS/2(OS/2の"/"はディレクトリではなくただの文字)の場合、
http://ja.wikipedia.org/wiki/OS/2
となりますが、きちんと機能します
OS/2の"/"はディレクトリではなく文字なわけですが、どうやってただの文字であると認識させているのでしょうか

249 :240:2008/05/10(土) 06:32:41 ID:???
>>246
再びご指摘有難う御座います。
ログを確かめたらDocomoとWillcomが言語環境がjaではありませんでした。
ロボットもja環境が混ざっている物はアクセスがあったので以下の設定にしてみました。

SetEnvif Accept-Language "ja" Accept_Langage_ja
SetEnvIf User-Agent "Googlebot" shutout
SetEnvIf User-Agent "Slurp" shutout
SetEnvIf User-Agent "msnbot" shutout
SetEnvIf User-Agent "spider" shutout
SetEnvIf User-Agent "Iria/1.07a" shutout
Order Allow,Deny
Allow from env=Accept_Langage_ja
Allow from env=携帯各社のホスト、海外扱いになる国内ISP
Deny from 弾きたいIP、海外・公共機関・企業ドメイン
Deny from env=shutout

ここでふと思ったのですが、言語環境が不明の物と日本語環境の両方を許可する事は出来るのでしょうか?
それが出来れば携帯ホストの指定部分が無くなります。
解析ログでは不明の部分はnot setとなっていたのですが…。

250 :edry(えどりぃ):2008/05/10(土) 09:50:25 ID:???
>>249
> 言語環境が不明の物と日本語環境の両方を許可する事は出来るのでしょうか?
不明というのはヘッダーフィールドが無いか、あっても値が空の場合だと思いますが、
そういった値のないものをマッチさせたいなら、次のように書きます。
SetEnvif Accept-Language "^$" Accept_Langage_ja
"^$" のダブルクォートで囲まれた部分は正規表現です。

正規表現のススメ
http://www.ne.jp/asahi/futohen/sankaku/h082.htm


SetEnvIf ディレクティブ
http://httpd.apache.org/docs/1.3/mod/mod_setenvif.html#setenvif
〉構文: SetEnvIf attribute regex env-variable[=value] [env-variable[=value]] ...

SetEnvif ディレクチィブの構文で regex のところは正規表現です。
attribute のところが属性で、HTTPリクエストのヘッダーのフィールド名だとか
RFC 2616で規定されているものを指定するわけです。(User-Agent とか Referer など)
ハイパーテキスト転送プロトコル -- HTTP/1.1
http://www.studyinghttp.net/rfc_ja/rfc2616


このスレもそうですが、どこかで見たものをそのまま使うのは無理があるので、
各ディレクティブの基本的な使い方はドキュメントで確かめるのが吉。

Apache(1.3) ディレクティブ
http://httpd.apache.org/docs/1.3/mod/directives.html
Apache のディレクティブの解説に使われる用語
http://httpd.apache.org/docs/1.3/mod/directive-dict.html

251 :Name_Not_Found:2008/05/10(土) 09:57:53 ID:???
>>250
>各ディレクティブの基本的な使い方はドキュメントで確かめるのが吉。
それをやるのがイヤだから、このスレで質(ry

252 :Name_Not_Found:2008/05/10(土) 12:16