mod_rewriteの利用。

(しらぎくモバイルシステム VI 設置方法)

しらぎくモバイルシステム VIをmod_rewriteで利用する方法です。

mod_rewriteを用いる上での注意点。(平成21年 9月21日)

mod_rewriteを用いる事で、例えばiモード専用サイトであれば、KDDI/沖縄セルラーなどサポート対象外の端末でアクセスしてきた場合でも、iモード用のURLと全く同一のURLで、しらぎくモバイルシステム VIを通して適切に閲覧出来るようになりますが、そのため、以下の点にご注意ください。

しらぎくモバイルシステム VI独自のURLが発生します。

しらぎくモバイルシステム VIでは、端末に合わせて長過ぎるHTML文書を適宜分割する機能を持っております。

分割されたHTML文書の二番目以降の切片に対しては、独自のURLが与えられます。

例えば、

http://www.uso800.uso/HORIKITA_Maki.html

と言うURLで示される文書が分割される事になった場合、二番目以降の切片部分へのURLは以下のようになります。

http://www.uso800.uso/HORIKITA_Maki.html%23切片に与えた名前

切片に与えた名前はid属性を持つ要素や<a name="">要素などを境に分割した場合にはid属性なりname属性なりで与えられるフラグメント名になりますが、そうでない場合には任意の文字列となります。

  • どの位置で分割されるかは端末の仕様にも依ります。また、切片に与えられる名前についても同様に端末依存となります。

このため、このような切片のURLでしらぎくモバイルシステム VIを通さない端末でアクセスした場合、当該URLが示す文書類が存在しないと誤認されてしまう場合があります。

以上の事から、mod_rewriteを用いる場合には、しらぎくモバイルシステム VIを通さない場合にこのような独自のURLでアクセスしてきた場合に適宜読み替えを行うようにする必要があります。

.htaccessでの記述例。(平成21年 9月21日)

  • 以下は記述例です。環境に依っては異なった記述とする必要もあり得ます。
基本的な記述方法
URL上の最上位ディレクトリがノード名の直下となる場合、サーヴァ内の対応する最上位ディレクトリ内の.htaccessに必要な記述をします。
RewriteEngine on
		RewriteRule (.*) http://CGI設置URL/txt.cgi/$1 [NE,L]
国内の携帯電話のみしらぎくモバイルシステム VIの処理対象とする場合 (平成21年 9月21日)
例えば、iモード専用サイトをiモードでも見られるようにしたい場合、すなわちiモード以外をしらぎくモバイルシステム VIでの処理対象としたい場合は、以下のように記述します。
RewriteEngine on
		RewriteCond %{HTTP_USER_AGENT} ^KDDI- [OR]
		RewriteCond %{HTTP_USER_AGENT} ^SoftBank/ [OR]
		RewriteCond %{HTTP_USER_AGENT} ^Vodafone/ [OR]
		RewriteCond %{HTTP_USER_AGENT} ^J-PHONE/ [OR]
		RewriteCond %{HTTP_USER_AGENT} DDIPOCKET [OR]
		RewriteCond %{HTTP_USER_AGENT} WILLCOM [OR]
		RewriteCond %{HTTP_USER_AGENT} ^Huaei/ [OR]
		RewriteCond %{HTTP_USER_AGENT} ^emobile/
		RewriteRule (.*) http://CGI設置URL/txt.cgi/$1 [NE,L]

		#対象外となる環境ではシステム独自のURLへの対処が必要です。
		#既にお使いの場合には、以下の記述を追記してください。(平成21年 9月21日)
		RewriteCond %{HTTP_USER_AGENT} !^KDDI-
		RewriteCond %{HTTP_USER_AGENT} !^SoftBank/
		RewriteCond %{HTTP_USER_AGENT} !^Vodafone/
		RewriteCond %{HTTP_USER_AGENT} !^J-PHONE/
		RewriteCond %{HTTP_USER_AGENT} !DDIPOCKET
		RewriteCond %{HTTP_USER_AGENT} !WILLCOM
		RewriteCond %{HTTP_USER_AGENT} !^Huaei/
		RewriteCond %{HTTP_USER_AGENT} !^emobile/
		RewriteCond %{REQUEST_URI} \# [OR]
		RewriteCond %{REQUEST_URI} \%23
		RewriteRule (.*?)\# http://CGI設置ドメイン/$1 [R=301,NE,L]
		RewriteRule (.*?)\%23 http://CGI設置ドメイン/$1 [R=301,NE,L]

また、EZウェブ専用サイトの場合には、二行目の

RewriteCond %{HTTP_USER_AGENT} ^KDDI- [OR]

と十四行目の

RewriteCond %{HTTP_USER_AGENT} !^KDDI-

をそれぞれ。以下のように書換えてください。

RewriteCond %{HTTP_USER_AGENT} ^DoCoMo/ [OR]RewriteCond %{HTTP_USER_AGENT} !^DoCoMo/
URL上の最上位ディレクトリがノード名の直下でない場合の基本的な書き方
URL上の最上位ディレクトリがノード名の直下でない場合、最上位ディレクトリの.htaccessに以下のように記述します。
RewriteEngine on
		RewriteRule ディレクトリ名/(.*) http://CGI設置URL/txt.cgi/$1 [NE,L]
特定のディレクトリのみを処理対象とする場合の書き方
特定のディレクトリのみしらぎくモバイルシステム VIで特定キャリア専用版のコンテンツを処理し、それ以外は端末ごとに最適化したコンテンツが用意されていると言う場合、最上位ディレクトリの.htaccessに以下のように記述します。
RewriteEngine on
		RewriteCond %{REQUEST_URI} /対象となるディレクトリ 1/ [OR]
		RewriteCond %{REQUEST_URI} /対象となるディレクトリ 2/ [OR]RewriteCond %{REQUEST_URI} /対象となるディレクトリ n/
		RewriteRule (.*) http://CGI設置URL/txt.cgi/$1 [NE,L]

		#モバイルサイトもmod_rewriteを用いている場合は当該箇所に以下の記述も必要。
		RewriteCond %{REQUEST_URI} !/対象となるディレクトリ 1/
		RewriteCond %{REQUEST_URI} !/対象となるディレクトリ 2/RewriteCond %{REQUEST_URI} !/対象となるディレクトリ n/
		(モバイルサイト向けのURL処理を書いたRewriteRule文)
		

設定の変更。

.htaccessを正しく記述したら、K.cgi内で my $queryMode=1; としていたのを my $queryMode=2; に書き直してください。

そのうえで動作確認を行ってください。