muumoo.jp


ニュース記事検索


過去ログ 2006年04月06日 - ニュース過去ログ

ニュース過去ログ

2006/04/06 ニュース OCNが迷惑メール対策を強化。「Inbound Port 25 Blocking」などを導入 (INTERNET Watch)

Outbound Port 25 Blockingはすでに導入されているOCNですが、いよいよInboundです。

これはちょっとやり過ぎという意見もあるんじゃないかと思う技術。動的なIPアドレスのリスト(範囲のリストなのかな)をあらかじめ用意して、そこに合致するIPから配信されるメールはブロックする、というもの。ほとんどのプロバイダは会員に動的にIPを割り当ててるわけで、そのリストさえあれば勝手にメールサーバを立てて送ってくるメールをブロックできる。

OCNは結構高額な固定IPサービスを提供してますが、これを使えばブロックされないのかな。それが目的だったりして。

この記事のURI:
http://muumoo.jp/news/2006/04/06/2inboundport25blocking.html

2006/04/06 ニュース 【緊急速報】アップルがインテルMacでWindowsが動くソフトを発表! (デジタル ARENA)

おおなんだなんだ。

こないだ、こんなことをするコンテストがあって、無事にWindowsをインストールできる方法が明らかになったところでしたが、なんと公式にアップルが作っちゃったようです。

Mac OS X 10.5の機能になるそうです。OSの機能ってのがよくわからないけど。パーティションとかを作るソフトっていう意味なのかな。

この記事のURI:
http://muumoo.jp/news/2006/04/06/1bootcamp.html

2006/04/06 管理人日記 URIのリダイレクト設定をやってみた (管理人日記)

以前の日記で、当サイトで以前まで使用していたURIを現在のものにリダイレクトしたいという話を書きましたが、試行錯誤の末、なんとか実現できました。

たとえば現在、

http://muumoo.jp/news/2006/01/28/0.html

というURIでアクセスできる記事は、

http://muumoo.jp/targetlog.shtml?20060128&0
http://muumoo.jp/news/2006/01/28/0
http://muu.moo.jp/news/2006/01/28/0.html
http://www.muumoo.jp/news/2006/01/28/0.html

これらのURIでも問題なくアクセスできますが、これには

  1. targetlog.shtmlが使われている(旧式)
  2. 拡張子 .html が無い(以前ベータテストしていた頃の形式)
  3. ドメインが muu.moo.jp になっている(旧ドメイン)
  4. ドメインが www.muumoo.jp になっている(www は不要)

という点があり、どれも惜しい。互換性のためにアクセスできるようにしていましたが、ひとつのページに複数のURIを与えるのはあまり好ましくないので、今回すべてリダイレクトするようにしました。

記事の数は無数にあるし、不要なリダイレクト用CGIなどを作るのも大変なので、全て.htaccessだけで実装します。

QUERY_STRING を含む URI のリダイレクト

まずは

/targetlog.shtml?20060128&0

/news/2006/01/28/0.html

にリダイレクトしたい。

正規表現を使ったリダイレクトは RedirectMatch を使います。

RedirectMatch ^/targetlog\.shtml\?(\d\d\d\d)(\d\d)(\d\d)&(\d+)$ /news/$1/$2/$3/$4.html

こんなのを書きましたが、全然動作しませんでした。ガックシ。調べたところ、RedirectMatchはQUERY_STRINGまでは対象にならないようです。targetlog.shtmlの部分だけが対象になる。これではダメです。

こういうときは url_rewrite を使うのが正しい。ただし url_rewrite もそのまま書くとやはり QUERY_STRING はダメ。RewriteCondを一緒に指定する必要があります。

RewriteCond %{QUERY_STRING} ^(\d\d\d\d)(\d\d)(\d\d)&(\d+)$
RewriteRule ^targetlog.shtml$ /news/%1/%2/%3/%4.html? [R=301,L]

こうなりました。RewriteCond でまず QUERY_STRING を引っ掛けて、RewriteRuleで書き換えます。%1〜%4までは、RewriteCondでマッチしたところの値が入ります。末尾に ? をつけると、書き換え後のURIではQUERY_STRINGが削除されます。そして最後に[R=301,L]を指定して、書き換えたあとのURIにリダイレクトさせます。

このリダイレクトの確認を行います。

拡張子 .html を付加

次は、URI移行のベータテストで使用していた

/news/2006/01/28/0

を、本番運用中の

/news/2006/01/28/0.html

にリダイレクトしたい。

これは簡単。RedirectMatchも使えると思いますが、せっかくRewriteRuleを覚えたのでこっちでやります。

RewriteRule news/(\d\d\d\d)/(\d\d)/(\d\d)/(\d+)$ /news/$1/$2/$3/$4.html [R=301,L]

これだけ。数字で終わってたときに.htmlをつけてるだけです。これは次のURIで確認できます。

別ドメインへのリダイレクト

最後はずっと保留にしていた事。ついでなので今やります。

http://muu.moo.jp/news/2006/01/28/0.html
http://www.muumoo.jp/news/2006/01/28/0.html

などの、muu.moo.jp や www.muumoo.jp といったドメインへのアクセスを

http://muumoo.jp/news/2006/01/28/0.html

というように、ドメイン部分を muumoo.jp へリダイレクトします。

Redirect系やRewrite系は、そのまま使うとドメインより後ろの部分しか対象にならないので、先ほどのQUERY_STRINGのときと同様に RewriteCond を使います。

RewriteCond %{HTTP_HOST} ^muu\.moo\.jp$
RewriteRule ^(.*)$ http://muumoo.jp/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.muumoo\.jp$
RewriteRule ^(.*)$ http://muumoo.jp/$1 [R=301,L]

こんな感じ。ドメイン部分が RewriteCond の条件に合致した場合、全てのURIをリダイレクトさせています。

RewriteCond は、直後の RewriteRule に対してだけ有効になるという点に注意が必要です。動作確認は以下のURI。

同時に複数のリダイレクトを適用

ここまでの対応は、同時に適用されます。例えば

こんなURIでも、正しくリダイレクトされるようになります。ちなみに www.muu.moo.jp というドメインは存在すらしないので書き換えることができませんが、まあそれはいいでしょう。

リダイレクトは 301 で

リダイレクトには 301 と 302 があります(HTTP/1.1 では 303 や 307もある)。これについては、CGI作るときに必須ともいえるRFC2616に書いてあります。

301 に関しては、

The requested resource has been assigned a new permanent URI and any future references to this resource SHOULD use one of the returned URIs. Clients with link editing capabilities ought to automatically re-link references to the Request-URI to one or more of the new references returned by the server, where possible. This response is cacheable unless indicated otherwise.

そして 302 は、

The requested resource resides temporarily under a different URI. Since the redirection might be altered on occasion, the client SHOULD continue to use the Request-URI for future requests. This response is only cacheable if indicated by a Cache-Control or Expires header field.

まあ何とかわかる英語。

301 の場合は引越し、302 は出張のようなものです。

Google などのロボットが巡回してくる場合に、301 を返すと、古い URI に関する情報は新しい URI へ統合されるようです。302 を返すといつまでも複数存在し続けてしまいます。なので、今回のような場合は 301 のリダイレクトが適切です。

Google がリダイレクトの種類によって処理を変えているのは有名なことですが、他はどうなんでしょう。検索サイトの巡回ロボットはもちろん、アンテナや自動収集ソフトなど、ちゃんと 301 を理解してくれているかなぁ。気になるところ。

この記事のURI:
http://muumoo.jp/news/2006/04/06/0redirect.html


Copyright© 2002-2007 muumoo.jp All Rights Reserved.