uttsu.com > uttsuの日記 >

2003年11月20日

2005年 8月
2004年 5月
2003年 11月, 10月, 8月, 5月, 4月, 3月, 2月, 1月
2002年 12月, 11月, 10月, 9月, 8月, 5月, 3月, 2月, 1月
2001年 6月, 5月, 4月, 3月

2003年11月20日

# 異なるサーバーに同じドメイン名でアクセスする方法

などのときに、自分の環境でだけそのドメイン名でサーバーにアクセスする方法:

hostsという、IPアドレスとホスト名の対応が書かれているファイルを書き換える。

たとえば、mydomain.comというドメインを取得し、レンタルサーバーも借りたが今は自宅サーバーで運用していて、一時的にレンタルサーバーへmydomain.comというURLでアクセスしたいときは、hostsファイルに次のように追加する:

レンタルサーバーのIPアドレス    mydomain.com

これで、一時的にmydomain.comのホスト名でレンタルサーバーへアクセスできるようになる。用が済めばその行を削除する。

hostsファイルは、Windowsの場合はWindowsディレクトリ以下を検索すれば見つかる。

# 比較的簡単にウェブページをPC・携帯端末両対応にする方法

同じURLで、ブラウザのUser-Agentにより自動的に適切なページを表示する方法。mod_rewriteを使用。

次のようなURL構造であるとする。

uttsu.com/
    games/
    docs/

ここで、各ディレクトリごとに(必要ならば)携帯端末用のHTMLファイルを置くディレクトリを作る。そのディレクトリで表示する携帯端末用のファイルが1つだけなら、index_m.htmlのようなファイルを用意してもよい。

uttsu.com/
    index_m.html
    games/
        m/
    docs/
        m/

各ディレクトリ(uttsu.com/, games/, docs/)の.htaccessに次のように記述:

RewriteEngine on
# set mobile
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo/.*   [OR]
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE/.*  [OR]
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser/.*   [OR]
RewriteCond %{HTTP_USER_AGENT} ^KDDI-.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^ASTEL/.*    [OR]
RewriteCond %{HTTP_USER_AGENT} ^PDXGW/.*    [OR]
RewriteCond %{HTTP_USER_AGENT} ^L-mode/.*
RewriteRule .* - [E=HTTP_MOBILE:true]
# for mobile
RewriteCond %{ENV:HTTP_MOBILE} ^true$
RewriteRule !^m/ - [C]
RewriteRule (.*) m/$1

index_m.htmlのようなファイルを用意した場合には、次のように記述:

# set mobile
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo/.*   [OR]
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE/.*  [OR]
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser/.*   [OR]
RewriteCond %{HTTP_USER_AGENT} ^KDDI-.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^ASTEL/.*    [OR]
RewriteCond %{HTTP_USER_AGENT} ^PDXGW/.*    [OR]
RewriteCond %{HTTP_USER_AGENT} ^L-mode/.*
RewriteRule .* - [E=HTTP_MOBILE:true]
# for mobile
RewriteCond %{ENV:HTTP_MOBILE} ^true$
RewriteRule ^$ index_m.html [L]

これで、同じURLで、アクセスしてきたUser-Agentにより適切なページが表示される。

_ 応用

URLに.htmlという文字を出したくない場合(uttsu.com/games/shooting などのようなURLを使いたい場合)は、次のように記述(ただし、携帯端末のみ。PCはまた別途設定):

RewriteEngine on
# set mobile
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo/.*   [OR]
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE/.*  [OR]
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser/.*   [OR]
RewriteCond %{HTTP_USER_AGENT} ^KDDI-.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^ASTEL/.*    [OR]
RewriteCond %{HTTP_USER_AGENT} ^PDXGW/.*    [OR]
RewriteCond %{HTTP_USER_AGENT} ^L-mode/.*
RewriteRule .* - [E=HTTP_MOBILE:true]
# for mobile
RewriteCond %{ENV:HTTP_MOBILE} ^true$
RewriteRule ^$ m/
RewriteCond %{ENV:HTTP_MOBILE} ^true$
RewriteRule !^m/ - [C]
RewriteRule (.*) m/$1.html

mod_rewriteでURLを内部的に書き換える処理は、サーバー内で無限ループに陥りやすくて危険です。テストはローカルの環境で。


2005年 8月
2004年 5月
2003年 11月, 10月, 8月, 5月, 4月, 3月, 2月, 1月
2002年 12月, 11月, 10月, 9月, 8月, 5月, 3月, 2月, 1月
2001年 6月, 5月, 4月, 3月

Copyright (C) Takashi Utsunomiya. All Rights Reserved.