.htaccessの偉い人 Part3

このエントリーをはてなブックマークに追加
443nobodyさん
http://pc.2ch.net/test/read.cgi/perl/1041611769/178-

このスレの197です。
SSIをhtmlで使いたいと言う方が現れて書き方などを考えていた中で
htmlでSSIを使うと鯖が重くなって同じ鯖の人に迷惑をかけないのか?
と疑問をもちました。
どのスレで質問したらいいかよくわからなかったので
.htaccesの質問だったのでココに書かせてもらいました。
スレ違いだったらすいません。
444nobodyさん:03/01/09 01:57 ID:???
SSIがそれなりの負荷になるのは事実。
また、最終更新時刻を示すHTTPヘッダが返されなくなるので、
2回目以降のアクセスでIf-Modified-Since:を使った条件つき取得が
できなくなり転送効率が落ちる(ただし、これはXBitHackで回避できる)。

.htmlの拡張子で特定のファイルでだけSSIを使いたいのであれば、
<Files "hoge.html">
SetHandler server-parsed
</FIles>
とすればよい。
445nobodyさん:03/01/09 02:13 ID:???
自分で書いておいて忘れてた(汗)。

>ただし、これはXBitHackで回避できる

.htaccessに
XBitHack on
と書いておいておけば、通常のSSIの設定をしなくても、
ユーザ実行権限のパーミッションを設定したHTMLファイルがSSIとして処理される。
<Files>で限定するよりもオススメ。

さらに、
XBitHack full
とすれば、グループ実行権限を設定したファイルでは、
SSIでもLast-Modified:が返されるようになる。
# Content-Length:はつかなかったような。
446nobodyさん:03/01/09 02:43 ID:???
>>444さん
丁寧なお返事ありがとうございました。
特定のファイルのみってこともできるんですね。
勉強になりました。

>>445は…よく意味がわからなかったのでまた自分で調べてきます!
ありがとうございましたー
447nobodyさん:03/01/09 12:04 ID:SDmzZYtG
よくわからんという声が多いみたいだし、おれもヒマなので解説してみる。
ついでにage。

SSIを使う場合には.htaccessで以下のように書けと言われることが多い。

AddHandler server-parsed .html
↑Apache1.3系の標準
AddType text/x-server-parsed-html .html
↑動くけど古い形式なのでオススメできない
AddOutputFilter INCULDES .html
↑Apache2系の標準

これは拡張子ごとにSSIかどうかを決めるものだが、まったく別の方法で
SSIにすることもできる。これがXBitHack。上のような設定をするかわりに

XBitHack on または
XBitHack full

と.htaccessに書いた場合、パーミッションが744(-rwx-r---r--)のファイルが
SSIとして処理される。また、fullにして754(-rwx-r-x-r--)ならば、
SSIとして処理された上でファイルの最終更新時刻もブラウザに返される。
要するに、サーバにFTPでアップロードするときに、SSIを使いたいものにだけ
CGIと同じような感覚で実行パーミッションを設定してやればいいということ。

http://www.apache.jp/docs/howto/ssi.html#configuringyourservertopermitssi
http://www.apache.jp/docs/mod/mod_include.html#xbithack

# 正確には、744/754でなくても、ユーザ実行権限(---x------)と
# グループ実行権限(------x---)のビットが設定されていればいい。
# これがXBitHackという名前の由来。
448nobodyさん:03/01/09 12:39 ID:???
>>447
まさにスレタイどおりのような御方!
449nobodyさん:03/01/11 14:31 ID:w+uzaBbX
.htaccessって何て読むんですか?
450nobodyさん:03/01/11 14:38 ID:???
>>449
自分は”エィチティーアクセス”と呼んでいる。
451nobodyさん:03/01/11 14:39 ID:2PtCQo+x
えいちてぃーあくせす。かと。
452nobodyさん:03/01/11 14:59 ID:nBOon37f
◆◇◆◇◆最新情報◆◇◆◇◆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
453nobodyさん:03/01/11 17:04 ID:???
>>449
ドットエイチティーアクセスです。
454nobodyさん:03/01/11 22:00 ID:NG3PPvGl
ReadmeNameやHeaderNameでファイル一覧表示をカスタマイズしたのですが、
それまでページ上部に表示されていたディレクトリ名が表示されなくなってしまいました。
現在は、
document.write(document.title);
というJAVAスクリプトをHTMLファイルに埋め込んで無理矢理表示させているのですが
(タイトルにはディレクトリ名が表示されるため)
SSIやCGI、JAVAを使わずにディレクトリ名を表示させる方法はあるのでしょうか?
455nobodyさん:03/01/12 20:55 ID:dcog8qoB
210.130.0.0-210.130.161.0 ってどう表現したらいいでしょうか
210.130.161.0/16では、210.130.161.1以上は弾かれてしまいますよね?
456nobodyさん:03/01/13 16:25 ID:???
>>455
サブネットマスクの値を求めればいいと思うのだが、えー引き算だったっけか?
ちゅーか何進で計算するんだっけかな、それ以前に引き算ではなく足し算かもしれん。
でもサブネット値は計算でだすんだったよね?>All
すっかり忘れてしまった。検索すりゃザクザク見つかると思うけど、漏れ鬱モード中なんで
気力なし。
精力バリバリな香具師のレスに期待age。
457nobodyさん:03/01/13 16:51 ID:???
>>456
そもそも >>455 の範囲が変なので変です。>210.130.0.0-210.130.161.0
まずは、
210.130.0.0-210.130.160.255と、
210.130.131.0で一旦分けりる。
16進数にしてみる。
D2.82.00.00 - D2.82.A0.FF
D2.82.A1.00
2進数にしてみる。
11010010.10000010.00000000.00000000-
11010010.10000010.10100000.11111111
11010010.10000010.10110000.00000000
こうしてみると判りやすいが、逆にわけわからんにもなりうる。
とりあえずAND演算ね。>すb網
458nobodyさん:03/01/13 16:56 ID:???
いや、あの、だったら無理してレスしなくても。

>>455
そんなヘンチクリンなのはひとつじゃ無理なんで、
0-127,128-159,160-161に分割して考えてくれや。
459456:03/01/13 22:17 ID:???
うー漏れ論理計算苦手。っちゅーかできない。w
AND、NAND、OR、EX-OR、NOT・・・。もうだめぽ、脳みそがパリティエラー出しますた。
生命維持も危険です。電卓みたいにお手軽計算できるフリーなアプリ誰か知らない?
460nobodyさん:03/01/13 23:53 ID:???
>> 456
Windows付属の電卓を、関数電卓モードにしてやってみては。
461山崎渉:03/01/15 13:32 ID:???
(^^)
462nobodyさん:03/01/15 14:09 ID:???
http://pc3.2ch.net/test/read.cgi/hp/1042273042/
↑から誘導されてきました。

.ifmファイルをWebサーバ側で
拡張子が".ifm"であるファイルのContent-Typeを"image/gif"
に設定したいんですが
.htaccessには何を書き込めばいいんでしょうか?
463nobodyさん:03/01/15 14:17 ID:???
AddType image/gif .ifm
464nobodyさん:03/01/15 17:54 ID:???
つーか向こうのスレでも答え出てるし
465nobodyさん:03/01/15 20:21 ID:fnmJusxi
>>455
>210.130.0.0-210.130.161.0 ってどう表現したらいいでしょうか
>210.130.161.0/16では、210.130.161.1以上は弾かれてしまいますよね?

>>458で答えは出た。それを1つに集約するのは無理。

210.130.0.0/17
(210.130.0.0/16 - 210.130.127.0/16まで)
210.130.128.0/19
(210.130.128.0/19 - 210.130.159.0/19まで)
210.130.160.0/31
(210.130.160.0/31と210.130.161.0/31)

3レコードはいるかと・・
違ってたら言って。恥ずかしいから。


あと>>456、ネタデスカ?(藁
実は全く判ってないっぽいなその発言・・・
鬱だから検索しないと言いつつ、実は検索したところで
根本的に理屈わかってないから判らないんじゃないの?
466465:03/01/15 20:31 ID:???
馬鹿にしっぱなしも悪いから良いもの紹介しとく
http://www.soi.wide.ad.jp/class/20010011/slides/03/index_bar.html
467nobodyさん:03/01/16 04:45 ID:0KKKlTBw
.htacceseで鯖の使用している容量を調べる事は出来るんでしょうか?
468nobodyさん:03/01/16 10:38 ID:???
>>467
何の容量だよ、わーん
469nobodyさん:03/01/16 13:14 ID:???
>>467
.htacceseってなんだよw
470nobodyさん:03/01/16 19:01 ID:lQHp/c2R
Web制作板のくだ質スレから案内されてきました。

.htaccess ファイルを使ってIPなどのアクセス制限をすることができますが、
あるIP範囲(192.168.100.0〜192.168.100.255)を制限しておいて、
そのIP範囲に該当する場合でも特定のUserAgentの場合には
アクセス許可するようには可能ですか?

教えて偉い人!
471nobodyさん:03/01/16 19:47 ID:???
>>470
SetEnvIfも適当に使って、ua_flagを作っておく。

order deny,allow
deny from 192.168.100.0/24
allow from env=ua_flag
472470:03/01/16 20:09 ID:???
>>471
ありがとうございます。
とりあえずこんな感じでやってみたら、一発でできました。感謝!

SetEnvIf User-Agent "Sleipnir" Sleipnir
order deny,allow
deny from 192.168.100.0/24
allow from env=Sleipnir

↑192.168.100/24はダメだけど、Sleipnirの場合のみ許可
473nobodyさん:03/01/20 02:51 ID:???
【質問】
外部からの直接参照はサーバー側が「禁止」と言ってるのに禁止設定されていないので、
勝手に直接参照されると規約違反になってしまうんです。

イメージソースを他のサーバーで直接参照できないようにする方法を教えてほしいです。
474nobodyさん:03/01/20 12:52 ID:???
FilesMatchとSetEnvIfを駆使
475nobodyさん:03/01/20 15:31 ID:???
>>474
うちのサーバーもたもたヘンな挙動をするんで、なぜか外部参照できなかったりできたりするんです。
キャッシュもクリアしてからやってるんですけど、どうなってるんでしょうか?
記述ミスしか考えられませんか?
476nobodyさん:03/01/22 22:24 ID:???
user-agentが無いアクセスを拒否したいんですけど、
こんなんでいいんでしょうか。

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !.
RewriteRule ^.*$ - [F]
477nobodyさん:03/01/22 22:24 ID:???
おもしろい規制だな
478nobodyさん:03/01/22 22:26 ID:???
^.+$じゃなくて?

.htaccessしらないから、阿呆なこといっていたらスマン
479nobodyさん:03/01/22 22:49 ID:???
>>477
SPAMBotにUA無しのがあるって聞いたんで。

>>478
うまくいきますた。ありがとう。

RewriteCond %{HTTP_USER_AGENT} !.
やってみたら、どちらでもいけますた(^^ゞ
RewriteCond %{HTTP_USER_AGENT} !^.+$
480nobodyさん:03/01/24 16:43 ID:???
>>479
NortonはUA削ることがあるぞ
Norton使用者お断りなら別にかまわんが
481nobodyさん:03/01/24 18:17 ID:???
USER_AGENT = Blocked by Norton
REFERER = Blocked by Norton
482nobodyさん:03/01/25 03:37 ID:ajCoNruO
拡張子無しのファイルやファイル個別指定で、指定したファイルだけ
CGIとして動かしたいのですがどうしたらいいですか?
483nobodyさん:03/01/25 11:08 ID:???
<Files "hoge">
SetHandler cgi-script>
</Files>
484nobodyさん:03/01/25 19:37 ID:atON430a
ありがとうございます
485nobodyさん:03/01/26 13:01 ID:28lAB0x2
486nobodyさん:03/01/31 04:04 ID:???
ttp://aaa/bbb/ccc/ddd/eee/fff.html

ccc以下に置いてある画像の直リンクを塞ぐために
cccに.htaccessを置いたら、フレーム仕様のfff.htmlに限りMACが
弾かれました。

リファラttp://aaa/bbb/とユーザーエージェントMACを
許可するため、


SetEnvIf REFERER "aaa/bbb" Ref1
SetEnvIf User-Agent "Mac_PowerPC" Ref2
SetEnvIf User-Agent "Macintosh" Ref3
Order Deny,Allow
Deny from all
Allow from env=Ref1
Allow from env=Ref2
Allow from env=Ref3

にしてみました。
WINで確認は出来ました。
MACは、これで大丈夫でしょうか??
487nobodyさん:03/01/31 11:01 ID:???
とりあえず、Refererによるアクセス制限はやめましょう。
せめてRefererが空の場合はアクセスを許可するようにしましょう。

RFC1945(HTTP/1.0)のセクション10.13、RFC2616(HTTP/1.1)のセクション15.1.3では、
Refererを送るか送らないかユーザが選択できるようにするようなインターフェースを
作ることをブラウザ開発者に強く推奨しています。
488nobodyさん:03/01/31 22:08 ID:O78gHYV5
SetEnvIf で複数の UserAgent をはじく場合、私は (1) や >>231 のように変数名を使い回す方法を
とっているのですが、Web 上の解説だと (2) のように変数名を変えている方法が多いようです。
(1) の方法で問題はありませんか。特に問題は発生していないようですが。

(1)
SetEnvIf User-Agent "UnkoBrowser" Dame0
SetEnvIf User-Agent "DQNbrowser" Dame0
SetEnvIf User-Agent "TakoBrowser" Dame0

deny from env=Dame0

(2)
SetEnvIf User-Agent "UnkoBrowser" Dame1
SetEnvIf User-Agent "DQNbrowser" Dame2
SetEnvIf User-Agent "TakoBrowser" Dame3

deny from env=Dame1 Dame2 Dame3
489nobodyさん:03/01/31 23:02 ID:???
(1)で問題なし。(2)は単にムダ。
490nobady:03/02/01 16:24 ID:Czj4ApwK
SeEenvIFまたはRewriteに精通した方にお聞きしたいのですが。
漏れのサイトはhttp://hogehoge.net/なんですが
http://HOGEHOGE.net/
http://hogeHOGE.net/
http://HogeHoge.Net/
などとブラウザに打ってアクセスしてくるヤシを専用ページへ
ご案内することって可能でせうか?
491nobodyさん:03/02/01 16:29 ID:i0abAvUT
http://jsweb.muvc.net/index.html
★☆★幸福になりたーい!!★☆★
492nobodyさん:03/02/01 17:37 ID:???
特定のブラウザを拒否するにはどうしたらいいのでしょうか?
普通にdeny from の後に書くとエラーがでてしまいます。
493nobodyさん:03/02/01 21:08 ID:???
>>489
Nimdaハケーン!!
駆除駆除駆除
>>490
そっとしておいてやれよ。
SetEnvIF Host ごにょごにょ
RewriteCond %{HTTP_HOST} ごにょごにょ
>>491
なれば。
>>492
RewriteCond %{HTTP_USER_AGENT} ごにょごにょ
494nobodyさん:03/02/02 17:54 ID:???
>>487
リファによる制限は、その目的によると思うぞ。
495nobodyさん:03/02/03 16:18 ID:???
googlebotが来た場合にのみ別ページを読み込ませたい。
普通のユーザーはhttp://hoge.com/index.html
googlebotはhttp://hoge.com/index.htm
という感じで。
そうするとurlはhttp://hoge.com/でgoogleに最適化されたページを
読ませることができると考えまして。
この場合httpd.confまたは.htaccessで書くとどうなるでしょう?
googlebotはホスト名:〜.googlebot.com です。
496nobodyさん:03/02/03 18:55 ID:???
>>495
あえて期待はずれの回答をしてみるテスト。

googleで検索にひっかかりやすくしたいというのであれば、
http://www.seojapan.com/joihyoji/cloaking.html
http://www.webpositioning.jp/search-engine-optimisation/what-is-cloaking.html
↑これを読むとわかるように、小細工はかえって逆効果。

googleの検索にひっかかりたくないというのであれば、
robots.txtや<meta name="robot">の方が確実。
497nobodyさん:03/02/03 19:00 ID:???
>>495
hoge をつかうなっての
つーか、Rewrite ネタ多すぎ。
498nobodyさん:03/02/03 20:44 ID:???
>>497
>hoge をつかうなっての
その訳は?(まー実際にサイトは存在しているが敢えて)
>つーか、Rewrite ネタ多すぎ。
ダメなん?
499nobodyさん:03/02/03 20:52 ID:???
>>495
漏れはApache2なんだが

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^Googlebot(.*).*$
RewriteRule ^.* http://hoge.com/index.htm$1 [L,R]
RewriteCond %{HTTP_USER_AGENT} !^Googlebot(.*).*$
RewriteRule ^.* http://hoge.com/index.html [L,R]
</IfModule>

でどう?
#RewriteCond %{HTTP_USER_AGENT} !^Googlebot(.*).*$ の行は
いらんかもしれん。
500499:03/02/03 20:55 ID:???
おい、なんだYO、>>495をよく見たら普通のユーザーもグーグルボットも
リダイレクト先がいっしょジャン!
URLコピペでカキコしたから気付かなかった罠。