知らなかった

perlで、use strict; してても$aと$bってmy or ourせずに使っても、
未定義エラーを吐かないんですね。。。知らんかったー。
といっても$a,$bなんていう変数名は僕的に滅多に使わないので、
別にどうでもいいっちゃ、いいんですがね^^;

PHP5はClassを定義して、OOPなコードが書けるので、修正や機能追加しやすいように依頼されたコードをクラスで書いて渡した。もし機能の追加・既存メソッドの修正があったら、ファイルを一個追加して、修正・変更が必要なクラスを派生させて(継承して)新しいクラスを作ればソースファイル管理もラクになるだろうし・・・と思ったんだよねぇ。

でも実際は違った。どうやらその人はPHPを「まともなコードが書ける人」じゃなくて、単に「PHPの文法が分かってるだけの人」なんだというのがやっと分かった。知らんかった-。

その人は、渡したファイルのクラスのメソッドを直接修正してるし・・・何のためにクラス化したんだよ orz
渡すとき、「変更があったら該当クラスを継承させて使ってねー」とか言っておくべきだった。

誰が、どの言語を、どの程度知っているのか、全く分からん!

mod_rewriteでアクセス拒否?

会社で管理している、とあるお客さんのホームページ(サイト)の偽物らしきページが某国のトップドメインを持つサイトに上がってるらしいからそこからのアクセスを拒否したい、という依頼があったらしい。

よくよく聞いたら、どうやら、その某国の問題サイトにアクセスがある度に、お客さんのサイトへアクセスしてきて内容を取得して携帯電話で見られるように形にして表示させているらしい。

まぁ、どうやらグーグルにもあるサービスを模した感じかな?普通ならそんなの無視しておけばいいんだが、お客さんのサイトは信用第一で万が一間違いがあってはなならないような固い業態なので放っておけないらしい。

まぁ、サイトのドキュメントルートに 下記ような感じの .htaccess ファイルを置けば、問題無い。

Order Allow,Deny
Allow from all
Deny from  拒否するリモートIPアドレスもしくはリモートホストのドメイン

が!、しかし! 話はここで終わらなかった!
なんと、そのお客さんのサイトのサーバー(正確には共用サーバー)は、limit を上書きできないんだ!
要するに上記の設定を .htaccess に記述してしまうと、500 Internal Server Error を吐いてしまうんだ!

ああ、なんという、クソさ加減。

そして、その時点で、僕にヘルプを求めてきたw

はじめは、そんなクソサーバーを使っている時点で、手の打ちようがねーよ的に返したわけだが・・・
・・・が、しかし、少しでもウェブに関わる仕事をしている者として、プロフェッショナルとして、それではダメだ。
(少々大袈裟です(^_^;;;)

何か代替案を・・・・というわけで、サーバーの仕様書を調べてみると、mod_rewrite の設定は可能のようだ。
っちゅーわけで、Rewriteモジュールを使用して、「特定のリモートIPアドレスにマッチしたらURLを書き換えてしまえ作戦」を発動することを提案。

まぁ、以下代替案。

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^000\.111.\222\.333$
RewriteRule ^(.*)$  /forbidden/ [R=403,L]
# ちなみに、/forbidden/ は実在しないディレクトリを指定した。

R=403 のところは本来は ステータスコード、301とか302とかにしなければならないんだけど・・・試しに403(アクセス禁止)にしてみたら、アクセス禁止ページを表示してくれた。これってHTTP的にイケないこと?違反なのかな??? まぁ・・・いいや。どうせオイラに責任はないんだしー。

Apacheに精通している人なら、もっとスマートな解決方法をお持ちだと思うんですが、それにしても大手のレンタルサーバーが提供する機能があまりにも貧弱すぎて、まぁ、もろもろ理由があると思うので、しょうが無いんですが・・・。

っていうか、会社にはWebサーバー管理・構築(主にApacheね)に精通する人が一人もいないので、素人に毛の生えたような僕でも適当にやっていけるんだなー(^^;;;

【追記 2013/4/15】
リダイレクトさせるのではなく、アクセスを制限するには、下記のようにするべきでした。
【追記 2015/09/07】
間違い修正

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^000\.111.\222\.333$
RewriteRule ^(.*)$ - [F,L]
#すべてのアクセスを403(アクセス禁止)に。