日本語
English
Français / French
Deutsch / German
Español / Spanish
Português / Portuguese
Italiano / Italian
Nederlands / Dutch
dansk / Danish
norsk / Norwegian
suomi / Finnish
svenska / Swedish
język polski / Polish
Ελληνικά / Greek
Български език / Bulgarian
Hrvatski / Croatian
čeština / Czech
limba română / Romanian
русский язык / Russian
اللغة العربية / Arabic
हिन्दी / Hindi
中文(簡体) / Chinese(Simplified)
中文(繁体) / Chinese(Traditional)
한국어 / Korean

お引越し余談

サーバ移転の舞台裏を少し。

実は、せっかくなので多言語プラグインの動作URLを、サブフォルダ(domain.com/??/)からサブドメイン(??.domain.com/)へ変更しようとしたのですが……結果、惨敗しました。何にか、といえばMod_Rewriteに、です。

ご存じない方のためにカンタンに紹介しておくと、「Mod_Rewrite」とは、URLを書き換えて、見た目のURLと実際のアクセス先を自在に操作できるようにするプラグインのことです。一般のユーザの方が意識することはまずないと思いますが、気づかぬところで様々な恩恵を受けているはずです。例えば、https://から打たずにURLをドメイン名から打ち込んでも、自動的にhttps://で始まる暗号化されたページに飛ぶようにして、利便性を向上する働きをしています。

しかしながらこの使い方が難しい。ぐぐれば、解説やサンプルは沢山あるのですが、複数ルール組み合わせたときの挙動がいまひとつ掴みきれません。

参考サイト各種
mod_rewrite モジュール – URL 書き換えエンジン
mod_rewriteリファレンス – dawgsdk.org

最終的なアクセス先URLは、「http://catswhiskers.jp/記事URL?lang=言語」というのは確定しています。

そこでまず、サブドメイン部分に言語指定を入れていた場合、例えば「http://en.catswhiskers.jp/」を「http://catswhiskers.jp/lang=en」に変換する必要があります。ここで重要なのがドメイン部分が変わるということは、たとえサブドメインのみといえど、別のサーバとして扱われる点です。つまり[P]オプションで内部プロキシ経由にしないと、リダイレクトされて見た目のURLが変わります。そのため、下記のような設定にすればOK、なはずなんですが…

RewriteCond %{HTTP_HOST} ^(en|fr|de ..中略.. |ja )
RewriteRule (.*) http://catswhiskers.jp/$1?lang=%1 [QSA,P]

この結果が何故か「404 Not Found.」 しかも通常の404とは違い、その一文のみが小さく表示されている状態です(XREAサーバでは)。ここでいきなり躓きました。ためしに[P]オプションを外して、普通にリダイレクトさせると問題なく表示されます。ということは書き換えルールは間違っていないとは思うのですが……XREAサーバはMod_Proxyが有効でないのかも?

あ、横道にそれますが、もう一つの[QSA]オプションは、その他のクエリを引き継ぐため(例えば他に?id=1がついてた場合)のものです。RewriteRuleの判定部分にクエリは含まれません。CMSなどを使っているときは、忘れるとハマりがちなので注意しましょう。ちなみにクエリ部分で何かしらマッチさせたいときは、RewriteCond %{QUERY_STRING}で判定させてください。

閑話休題。[P]オプションについてあれこれ試してみたのですが、何をやっても駄目。どう書き換わって404と言っているのか分かればと思い、ログを取ろうとRewriteLogおよびRewriteLogLevelを設定してみたのですが、XREAはどうもこのオプションは使用できないようで…… となると想像で試すしかなく、いい加減精神的限界に近づいてきたので諦めた次第であります。

さて、ではあっさり終わりかと言うとそうではなく、サブフォルダの言語指定をクエリに変換しなくてはいけません。その設定が以下です。

RewriteCond %{REQUEST_URI} ^/(en|fr|de..中略..|ja)
RewriteRule ^[-a-zA-Z]+/(.*) /index.php/$1?lang=%1 [QSA,L]

また、このサイト特有のURLとして、/blog/の下に、カテゴリ名/年月日/記事名.htmlという構造になっています。そして実はカテゴリ名はあってもなくてもきちんと表示されるようにしています。これは将来的にカテゴリ名を変更したときでも、以前のURLで記事にアクセスできるようにするためです。これを実現するために、実体はカテゴリ名なし(画像を見るとよく分かると思います)、プラグインでリンクにカテゴリ名を挿入する、という処理を内部的に行っています。そのためのリライトルールが……

RewriteCond %{REQUEST_URI} ^/(en|fr|de..中略..|ja)/blog/[^/]+/([0-9_]+/.*)$
RewriteRule (.*) /index.php/blog/%2?lang=%1 [QSA,L]

これ(上)とこれ(下)です。

RewriteCond %{REQUEST_URI} ^/blog/[^/]+/([0-9_]+/.*)$
RewriteRule (.*) /inde.php/blog/%1 [QSA,L]

さらにその後に続けて、Word Press標準のルール(下)が入ります。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [QSA,L]

だいぶ混乱してきましたよね。ええ、私も混乱してます(笑)。おそらく私の理解が不足してるせいなのですが、書き換えたURLを次のルールにうまく渡せないのです。本来は、「言語指定部分の書き換え」->「カテゴリ名の書き換え」と順番に渡せれば、もっとすっきり書けるのですが…… 結局、

  1. 言語指定あり、かつ、カテゴリ名の入るURL
  2. 言語指定あり、かつ、カテゴリ名の入らないURL
  3. 言語指定なし、かつ、カテゴリ名の入るURL
  4. 言語指定なし、かつ、カテゴリ名の入らないURL

という4通りのルールを別個に書く羽目になっています。原因追求には、RewriteLogの取れるテストサーバを立てて実験してみるしかないかもしれません。URLと書き換えルールを入力すると、結果が出てくるようなWebツールを切望しております。。

ちなみに、WordPress標準のルールのRewriteRuleの「(.*)」ではなく「.」で済んでいるところが、個人的にはすごく不思議なのです。これだと「/test.html」へのアクセスが最初の一文字だけ変換されて「/index.phpest.html」(RewriteRuleでは最初の/は判定に含まれない)となる気がするのですが…… 実際に記事を見てみるとこれで見れているので、間違ってはいないのでしょうけど。

これで一応完成なのですが、どうもディレクトリなのに最後を/で終えないURLでアクセスするとエラーがでるので、アクセス先がファイルではない場合(拡張子がついていない場合)、最後に/を補うようにもしてたりします。……リライトだけでそれなりの負荷になりそう。

ついでにXREA特有のお話ですが、PHPがセーフモードで動いていて色々と動かないものがあったりすることが多く、CGIモードと呼ばれる形態でPHPを動かすことが定番になっています。それには.htaccessに「AddHandler application/x-httpd-phpcgi .php」を記述しておきます。

が、WordPressを動かすときは要注意です。Mod_Rewriteと組み合わせて使った場合、CGIモードのPHPはPathInfoの情報がうまく取れなくなるらしく、記事URLの形式によっては個別記事が見れなくなります(ました)。結局、セーフモードに戻して運用しています。記事の閲覧には問題ないですが、自動アップグレードができなかったりします。その他の制限についてはPHP: セーフモード – Manualを参考にしてください。

あ、そうそう。コメント投稿後にエラーが出るのもついでに直しました(ようやく…そしてたぶん)。記事URLの形式のせいか、投稿後にhttp://~//~とスラッシュを2つ連続して含むアドレスに飛ばされてしまうようなので、それを書き換えるだけのプラグインを作っていれてます(わざわざ…苦笑)。もっと根本的な直し方をご存知の方は教えてくださいm(_ _)m


2009年3月31日(火) 12:56 コメント(0)   トラックバック(0)

世にも奇妙な物語 春の特別編 2009

今回は総じてある意味「世にも奇妙な物語」らしかったです。ブラックジョーク風味を堪能できました。ちなみに前回の感想はこちら

    • 『爆弾男のスイッチ』
    • 主演:市原隼人、本郷奏多
    • 原作:石黒正数「スイッチ」
    • 「主人公は偶然出会った同じ大学の学生に奇妙なもの渡される。それは彼自身の体に埋め込まれた爆弾のスイッチだと言うが…」

      同じ人相でも雰囲気によってああも変わるものですねー。主人公役の市原隼人も素なのかどうかわかりませんが、テンパった感じが良く演技されていました。そしてラストの超笑顔っぷりがまた素晴らしい(笑)。「心に爆弾を抱えていたんでしょうかねぇ」ってそういうオチをつけるか!(笑)

    • 『輪廻の村』
    • 主演:伊東美咲
    • 「編集長の命令で、イヤイヤながらも奇妙なタレコミの裏づけ取材に向かった主人公だが……」

      戦争マニア(違う)の子供が出てきたときにまず思ったのが、特定筋から軍靴の音が~という批判がくる!と(苦笑)。オチのひねりは「よにきみょ」らしい話。ラストシーンはちょっと弱かったですね。2chで誰かが書いてましたが、主人公が恨みに思っている相手が出てくれば、タイトルがもう一つ意味を持つようになり、深みが増したかと。

    • 『クイズ天国 クイズ地獄』
    • 主演:石原良純、遊井亮子
    • 「最近くだらないクイズ番組ばかりやっている!と憤る主人公だったが…」

      こんな世界ヤダ(笑)。いろんなクイズ番組のパロディのオンパレードで、しかも「CMです」でホントにCMに入るあたりは一種のアイロニーか。とどめにこの一連のクイズ全体もクイズ番組で、哀れ地獄行きと。ところでアルファベットの問題はちょっと気になりました。落ち着いて考えてみると、
      「アルファベットの最後の文字は」→「ト」
      「アルファベットの最後のスペルは」→「Z」
      「アルファベットのスペルの最後は」→「t」
      という感じでしょうか。これでも厳密な表現ではないのでややアンフェアかも。

    • 『真夜中の殺人者』
    • 主演:相武紗季、鈴木亜美
    • 原作:中井紀夫「夜の殺人者」
    • 「しつこく言い寄ってくる男に対し、『驚かせるような大きなことをしたら考えてあげる』と断りがてら冗談で言った主人公に対し…」

      今回の中で一番ヘン!な作品でした。いろんな意味で納得がいかない…… 鍵の問題とか、スパナ最強すぎは置いておいて、ラストがハッピーエンド風に終わってるのが、何かの皮肉かと首を傾げることしばし。後日談でもう一ひねりオチがつけれると良かったかも。

    • 『ボランティア降臨』
    • 主演:大竹しのぶ、高島礼子
    • 原作:原宏一「ボランティア降臨」
    • 「突然やってきた人の良いボランティアに感謝感激の家族の中、主人公は居場所を徐々に奪われ…」

      ボランティアという魔法の言葉を掲げ、一言も文句を言わず、にこやかに頼まれごとをこなしていく様に不思議な恐怖を覚えました。終盤での「主婦は感謝されないが、ボランティアなら感謝される」というセリフでこれまでの行動に納得感を得つつも、ラストシーンでさらに。まああそこまでいくと恐怖を通り越して、笑いがこみ上げてきますが(笑)。ついでに2chみたら「なんだ、おまえらが普段見てるアニメと同じ設定か」と書かれていて苦笑。

総括としてはアイロニーが利いた作品が多かった印象です。特にマスコミに対するものが多く、ついに自虐ネタに走ったのかと思いました。でも自虐ネタができるというのは、自分を客観的に見れるということでもあるので良いことです。

まああんまりマジに自虐やられても困りますので、あくまでフレーバーとしてお話に面白おかしく取り込みつつ、末永くこの番組を続けてほしいですね。


2009年3月30日(月) 23:44 コメント(0)   トラックバック(0)

お引越し完了

ドメイン移管およびサーバ移転が完了しました。

移転作業自体は実質1日。そこからDNS情報が伝播するのにさらに1日ほど。 機械処理で即座に実行される(と思われる)Value-Domainと、人手ながら対応早いWADAX間だったからか、思っていたより即座に反映されました。

ついでに手続きについて簡単に書いておきます。.comなどとは違い、汎用jpドメインの移管には「指定業者変更」「ドメイン移転」の2種類あります。

まず汎用jpドメインは、「指定事業者 -> 登録者 -> ドメイン」という構造で管理されています。汎用jpドメインをある業者で初めて取得する際は、必ず登録者情報の登録を行い、REG-00-xxxx-xxxxという形式の登録者番号を取得する必要があります(ほとんどの場合、業者側で代行してくれていますが)。

さて「指定業者変更」とは、上記の構造を見るとわかるように、「登録者 -> ドメイン」の部分はそのままに、ドメインを管理する業者を変更する手続きです。つまり、ひとつの登録者番号で複数のドメインを登録していた場合、それらのドメインも全て移管されます。その代わり、指定事業者の情報のみが入れ替わるため、ドメインの有効期限はそのままで移管できて無駄がありません。

そして「ドメイン移転」とは、上記の構造で示す「ドメイン」を別の「登録者」に変更する手続きです。登録者が同一人物でも、それぞれの事業者ごとに異なる登録者番号を登録し、ある登録者番号から別の登録者番号へ移管することになります。この場合、ドメインの有効期限は更新しなくてはなりません。当然、更新費用がかかります。

今回は別に複数のドメインを管理していたわけではなかったので、指定事業者変更でよかったのですが、ドメインの有効期限も残り少なかったのでドメイン移転を選びました。手順は簡単で、あらかじめ移転元に「ドメイン移転の事前承認依頼」を出します。出し方は事業者ごとに異なると思われますので、お使いの事業者のサイトをご確認ください。WADAXの場合はフォームから申請を送りました(実は送ったのが直前過ぎたため、メールで確認がきましたが…)。そして移転先の事業者に移転の申し込みをして、移転元に移転申請を出してもらいます。あとは移転元の申請承認を待って移管手続きの完了、とこれだけです。

無事、移管されたらDNSの変更をしましょう(大抵の場合、移転先事業者がやってくれます。Value-Domainは「自力で変更できる」ので自分で)。さすがにDNS情報が更新されきるまでには少し時間がかかりますのでしばらく待ちです。いつDNSが変わっても良いように、新しいDNSが向いてる先のサーバの確認は忘れずに。WWWはともかくMAILは色々なところに迷惑がかかる可能性もありますから。また、最近の切り替えは早いですが、もしかしたら古いDNS情報をキャッシュし続けているサーバがいるかもしれませんので、しばらくは古いメールサーバの方もチェックしておきましょう。

一口にドメインの移管といっても確認することが多いので大変ですね。ただ、最近のレンタルサーバ屋さんの多さを考えると、そのうち統廃合が起こりそうですので、手続きの仕方はあらかじめ把握しておくと安心です。


2009年3月29日(日) 21:17 コメント(0)   トラックバック(0)

年度末なので?

いや忙しいってのもあるんですが、一度サボり始めると次書き出すのにパワーが必要になっていけませんね。

さて急に話は変わって、現在ドメインおよびサーバの移転を予定しております。しばらくブログが見れなかったり、メールもあやしくなりますが、あしからずご了承くださいm(_ _)m

ここ(WADAXの共用レンタル)は、サポートのレスポンスも良く、性能的にも十分ではあったのですが、単純にコストの問題ともう少し設定の柔軟さが欲しかったので。まあjpドメインの移管ってのもやったことないので、一度やってみたくはあったりもして。

そんなわけで、しばらく消えたように見える時期がありますが、そのうち戻ってきます(笑


2009年3月23日(月) 21:05 コメント(0)   トラックバック(0)