mod_rewriteの利用。

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

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

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

mod_rewriteを用いる事で、モバイル端末でアクセスしてきた場合にPCのURLと全く同一のURLでしらぎくモバイルシステムFULLを通して利用出来るようになりますが、そのため、以下の点にご注意ください。

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

しらぎくモバイルシステムFULLでは、端末に合わせて長過ぎる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でPCなどしらぎくモバイルシステムFULLを通さない端末でアクセスした場合、当該URLが示す文書類が存在しないと誤認されてしまう場合があります。

  • しらぎく日本語URIでは、第0.960版(平成21年 9月21日)以降の版でこの問題に対応しております。

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

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

  • 以下は記述例です。環境に依っては異なった記述とする必要もあり得ます。
基本的な記述方法
URL上の最上位ディレクトリがノード名の直下となる場合、サーヴァ内の対応する最上位ディレクトリ内の.htaccessに必要な記述をします。
RewriteEngine on
		RewriteRule (.*) http://CGI設置URL/txt.cgi/$1 [NE,L]
国内の携帯電話のみしらぎくモバイルシステムFULLの処理対象とする場合 (平成21年 9月21日)
国内の携帯電話のみしらぎくモバイルシステムFULLでの処理対象としたい場合は、以下のように記述します。
RewriteEngine on
		RewriteCond %{HTTP_USER_AGENT} ^DoCoMo/ [OR]
		RewriteCond %{HTTP_USER_AGENT} ^KDDI- [OR]
		RewriteCond %{HTTP_USER_AGENT} ^SoftBank/ [OR]
		RewriteCond %{HTTP_USER_AGENT} ^Vodafone/ [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への対処が必要です。
		#既にお使いの場合には、以下の記述を追記してください。
		#但し、しらぎく日本語URIの第0.960版以降を併用している場合には不要です。(平成21年 9月21日)
		RewriteCond %{HTTP_USER_AGENT} !^DoCoMo/
		RewriteCond %{HTTP_USER_AGENT} !^KDDI-
		RewriteCond %{HTTP_USER_AGENT} !^SoftBank/
		RewriteCond %{HTTP_USER_AGENT} !^Vodafone/
		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]
URL上の最上位ディレクトリがノード名の直下でない場合の基本的な書き方
URL上の最上位ディレクトリがノード名の直下でない場合、最上位ディレクトリの.htaccessに以下のように記述します。
RewriteEngine on
		RewriteRule ディレクトリ名/(.*) http://CGI設置URL/txt.cgi/$1 [NE,L]
特定のディレクトリのみを処理対象とする場合の書き方
特定のディレクトリのみしらぎくモバイルシステムFULLでPC版のコンテンツを処理し、それ以外はモバイル専用版を配信したいと言う場合、最上位ディレクトリの.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を正しく記述したら、txt.cgi内で my $queryMode=1; としていたのを my $queryMode=2; に書き直してください。

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