<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>ke-tai.org &#187; session</title>
	<atom:link href="http://ke-tai.org/blog/tag/session/feed/" rel="self" type="application/rss+xml" />
	<link>http://ke-tai.org/blog</link>
	<description>ke-tai.org　ケータイプログラマのためのコミュニティサイト。携帯電話向けWeb開発の技術情報を扱っています。</description>
	<lastBuildDate>Thu, 09 Feb 2012 13:09:09 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ke-tai.org/blog/tag/session/feed/" />
		<item>
		<title>ケータイで「mod_rewrite + セッション」を使う際の注意点</title>
		<link>http://ke-tai.org/blog/2008/06/06/mobmod_rewrite/</link>
		<comments>http://ke-tai.org/blog/2008/06/06/mobmod_rewrite/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 10:18:28 +0000</pubDate>
		<dc:creator>matsui</dc:creator>
				<category><![CDATA[DoCoMo]]></category>
		<category><![CDATA[サーバ]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[クッキー]]></category>
		<category><![CDATA[セッション]]></category>

		<guid isPermaLink="false">http://ke-tai.org/blog/?p=321</guid>
		<description><![CDATA[ここ最近は大きなニュースが多く、ニュース記事の紹介ばかりでしたので、ひさしぶりに技術メモ的なものを書きたいと思います。 &#160; 先日mod_rewriteを使っていて、セッション絡みで少しつまづいた件をご紹介します [...]]]></description>
			<content:encoded><![CDATA[<p>ここ最近は大きなニュースが多く、ニュース記事の紹介ばかりでしたので、ひさしぶりに技術メモ的なものを書きたいと思います。</p>
<p class="spacer-small">&nbsp;</p>
<p>先日mod_rewriteを使っていて、セッション絡みで少しつまづいた件をご紹介します。</p>
<p>実はPHPで動いているページを、「*.html」として静的コンテンツに見せる、というものを作ろうとしていました。<br />
.htaccessの内容としては次の通りです。</p>
<pre class="super-pre-small"><code>&lt;IfModule mod_rewrite.c&gt;
  RewriteEngine On
  RewriteRule ^([0-9A-Za-z~_\-\.]+)\.html$ /viewer.php?p=$1 [L]
&lt;/IfModule&gt;
</code></pre>
<p class="spacer-small">&nbsp;</p>
<p>ブラウザで正常に動作することを確認し、その後ドコモの実機でテストしたのですが、何度試してもセッションを引き継いでくれません。</p>
<p>それもそのはず、ドコモ端末はcookieが使えませんので、URLにセッションIDを埋めこんで引き継いでいく必要があります。<br />
上記のような設定では、mod_rewriteがセッションIDの引数をカットしてしまうのです。</p>
<p class="spacer-small">&nbsp;</p>
<p>というわけで、ケータイのセッションに対応するための設定は以下のようになります。</p>
<pre class="super-pre-small"><code>&lt;IfModule mod_rewrite.c&gt;
  RewriteEngine On
  RewriteRule ^([0-9A-Za-z~_\-\.]+)\.html$ /viewer.php?p=$1 [<strong>QSA,</strong>L]
&lt;/IfModule&gt;
</code></pre>
<p>[QSA,L]の部分の、QSAフラグがポイントとなります。</p>
<p>リファレンスによると、QSAフラグは次のように説明されています。</p>
<p class="super-pre-small"><small>このフラグは、置換文字列の中でマッチしたものを書き換えるのではなく、 そこにクエリー文字列部分を追加するように、書き換えエンジンに強制します。書き換えルールを通してクエリー文字列に何かデータを追加したい場合にこのフラグを使います。</small></p>
<p>ちょっとわかりづらい説明ですが、要はアクセスされたURLについていたクエリー文字列を、そのまま引き継ぐためのフラグです。<br />
これをつけることによって、セッションＩＤを失うことなくプログラムに渡すことができます。</p>
<p>次のような書き方でも、同じように動くようです。</p>
<pre class="super-pre-small"><code>viewer.php?p=$1&#038;%{QUERY_STRING} [L]</code></pre>
<p class="spacer-small">&nbsp;</p>
<p>なお、ケータイのセッションに関する詳しい説明は、こちらをご覧ください。<br />
→　<a href="http://ke-tai.org/blog/2007/12/12/php_session_new/">PHPでケータイからセッションを使う場合の設定方法</a></p>
<p class="spacer">&nbsp;</p>
<p><strong><em>関連：</em></strong></p>
<ul>
<li><em><a href="http://ke-tai.org/blog/2007/10/26/agent-rewrite/">ケータイキャリア毎に振り分けを行うには（mod_rewrite編）</a></em></li>
<li><em><a href="http://ke-tai.org/blog/2007/12/12/php_session_new/">PHPでケータイからセッションを使う場合の設定方法</a></em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ke-tai.org/blog/2008/06/06/mobmod_rewrite/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ke-tai.org/blog/2008/06/06/mobmod_rewrite/" />
	</item>
	</channel>
</rss>

