2004年08月20日

個別アーカイブのPHP化

今まで、月別アーカイブとカテゴリアーカイブはPHP化してましたが、今日は個別アーカイブもPHP化してみました。

ファイル名を全部変えると、既にトラックバックして貰ったり、検索サイトに登録されていたりしてたので、そのままジャンプしてくると、404エラーになっちゃうんですよね。
まぁ、だからといって元のhtmlファイルを残しておくとなると結構な容量食っちゃうので差し控えたいですし…。
そんな訳で今まではPHP化できないでいたんですよね。

ところが別の調べものをしていたら解決方法を得る事が出来たので、今回思い切ってPHP化しちゃいました。

まぁ、対策内容は至って簡単で「.htaccess」を使ってリダイレクトさせてしまう。って手なんですけど。

それでは、対策手順を説明します。

まず、うちのサイトの個別アーカイブは「http://blog.exec.to/private/archive」内に、年ディレクトリ、月ディレクトリがあって、その中に「post[日付]_[ID].html」という名前で入っています。
昨日書いた記事の場合、「http://blog.exec.to/private/archives/2004/08/post19_171.html」という事になりますね。
これを、新たに作った「post19_171.php」に飛ばすには、「.htaccess」に以下のように記述すればOKです。

Redirect permanent /private/archives/2004/08/post19_171.html http://blog.exec.to/private/archives/2004/08/post19_171.php

ちょっと長いですねぇ…。
みにくくてすいません(^^;
ブラウザサイズによっては、改行されているかもしれませんが…。
これ、1行です。

まぁ、こんな感じで、全てのhtmlファイルに対してリダイレクトをずらずら〜っと列挙していく…のは面倒ですよね(爆)
今現在99個の記事があって、この記事が記念すべき100個目なんですけど。
さすがに99個のURLを調べて列挙していくとなるとかなり辛い作業です。
特にここだとFTPとか使えないので…。

てな訳で、面倒臭がりな俺にぴったりな、もっと簡単な方法をご紹介しましょう(笑)
その名もずばり「RedirectMatch」です。
リダイレクトファイルの指定に正規表現が使えるという優れものです(笑)

じゃ、上に書いたRedirect文を正規表現に置き換えて見ましょう。

RedirectMatch permanent /private/archives/(.*)/post(.*)\.html http://blog.exec.to/private/archives/$1/post$2.php

長さは余り変わりませんが…。99個かかずとも、これ1行で全ての個別アーカイブのリダイレクトが可能になります。

いや〜。世の中便利なものが用意されてるんですねぇ〜。

参考:
Apache モジュール mod_alias「RedirectMatch ディレクティブ」

2004年08月10日

コメントスパム対策

山猫の散歩: アンタも好きねぇ??でも書いてましたけど、うちにも2件ほどコメントスパム(海外カジノサイト)がありましたので、手っ取り早く対策しちゃいます(笑)

この手のコメントスパムって、一生懸命手で書いていくヤツと、Spamロボットが書いていくやつとあるらしいんですけど、大量に書かれるのはやっぱロボットスパムですよね〜。
てな訳で、コメントスパム対策を2種類やってみました。

⇒参考
コメントスパム対策 :小林Scrap Book
alfabeat: コメント スパム クイック フィックス

まず一つ目は、フォーム内に独自の項目を追加して、この項目が存在しない場合にはコメント登録を中止するというものです。

修正箇所は2箇所。

第1に、「Individual Entry Archive」テンプレートのコメント送信フォームに以下の行を追加します。

フォームタグは2箇所ある場合があるので、</form>タグを探して、その上に書くのが無難です。

第2に、mt-comments.cgiに以下のコードを追加します。

何処に追加するかというと、だいたい8行目くらいのところの「use strict;」の直下ですね。

これで、mt-comments.cgiを直接叩き、しかもMovableTypeの仕様固定で送られてくるコメントを排除出来ます。

次に、mt-comments.cgi自体の名前を変えてしまう方法です。

これは、ソース修正が1箇所、ファイル名変更が1個です。

第1に、「mt.cfg」にある「CommentScript」指定を有効にします。
「CommentScript」で検索をかけると、以下のようになっていると思います。

これを以下のように修正します。


第2に、mt-comments.cgiの名前を、上で指定したファイル名に変更します。

※ここでは「comment.cgi」と書いていますが、任意の名前に変更してください。

これで、MovableTypeの仕様固定であるmt-comments.cgi自体を直接叩けなくなります。

両方の修正をおこなった場合、「サイトの再構築」を必ず行ってください。


でもまぁ、Spamボットがページを解析したらアウトなんですけどね(爆)

2004年07月27日

コメントのリンク修正

今まで気づかなかったんですけど(^−^;
コメントを書いてもらった際にURLが記述されていると、リダイレクトページが生成されて当該ページへジャンプする筈…だったんですが…。
どうも、MTの仕様で、リダイレクトページの一番最初のリンクURLに飛んでしまっていたようです。

ごらんの通り、うちはフリーのエリアを使用していますが、どうも、挿入される広告の一番上のURLに飛んでいたようです。

てな訳で、修正して正しくジャンプできるようにしました。

以下は修正内容です。

lib/MT/App/Comments.pm(98): window.onload = function() { document.location = document.location = document.links[0].href; };

この部分が、一番最初のURLにジャンプするっていう場所ですね。
これを、以下のように変更します。

window.onload = function() { document.location = document.location = document.links[0].href; };
 ↓
window.onload = function() { document.location = '$uri'; };

$uriには、当該URLが格納されているので、onload時に書き込まれたURLへ飛びます。

ご迷惑をおかけいたしました( __)

2004年07月20日

業務連絡

サイトにサブドメインを割り振ってみました。
以前のURLでも接続可能と思われますが、もしうまく行かない場合はご連絡下さい。
本当は別サーバに持っていこうかとも考えたんですけど、データ移行はともかく、今までトラックバックして頂いた方々にご迷惑かかりますのでやめました(^−^;

迷惑かけずに簡単にお引越しすることって出来ないもんですかねぇ〜。