mod_rewriteでの書き換え後のURLにQUERY〜STRINGを使用する
カテゴリー:Web
mod_rewriteでURLを書き換える際に、書き換え後のURLにQURY STRINGを入れる方法に苦労したので、その記録を書いておきます。
mod_rewriteでのURL書き換え例(QUERY STRINGを含まない場合)
まずはQUERY STRINGを使わない場合について説明します。
- index.phpをindex.htmlでアクセスできるようにする。
RewriteEngine on
RewriteRule ^index.html$ index.php [L]
- すべてのphpファイルを拡張子htmlでアクセスできるようにする。
RewriteEngine on
RewriteRule ^(.+).html$ $1.php [L]
書き換え前にQUERY STRINGを含む場合
次に書き換え前のアドレスにQUERY STRINGを含む場合
たとえば
http://www.hogehoge.com/hoge.php?name=yamada&pref=tokyo
というURLを
http://www.hogehoge.com/yamada/tokyo/hoge.php
と書き換える場合は以下のようにします。
RewriteEngine on
RewriteRule ^(.+)/(.+)/hoge.php$ index.php?name=$1&pref=$2
書き換え後にQUERY STRINGを含む場合
たとえば
http://www.hogehoge.com/hoge.php?name=yamada&pref=tokyo&id=1111
というURLを
http://www.hogehoge.com/yamada/tokyo/hoge.php?id=1111
と書き換える場合は以下のようにします。
RewriteEngine on
RewriteCond %{QUERY_STRING} id=(.+)$
RewriteRule ^(.+)/(.+)/hoge.php$ hoge.php?name=$1&pref=$2&id=%1
追記
上のQUERY STRINGを含む場合の方法だと3行でやっていますが、以下のようにすると、もっとシンプルに行うことができることがわかりました。
RewriteEngine on
RewriteRule ^([^/]+)/([^/]+)/hoge.php$ hoge.php?name=$1&pref=$2&%{QUERY_STRING} [L]
参考にしたサイト
muumoo.jp:RewriteCond で QUERY_STRINGを使う具体的な例がありました。
mubon-blogの障害とお詫び。
カテゴリー:mubon-blog
障害について
4月13日から20日までの間、一部のブログが正常に表示されない状態となっておりました。
現在は正常に動作する状態となっております。
利用者の方、ご迷惑をおかけしました。
障害の原因について
mubon blogは各ブログに細かい設定を行うための設定ファイルがあります。
しかし現在、まだ仕様が安定していないため、設定ファイルのフォーマットが度々かわります。
その際、すべてのブログの設定ファイルのフォーマットを新しい形式にしなければならないため、作業に時間がかかり、また作業ミスにより、フォーマットの違いによるエラーが起こることがありました。
そこで共通の設定ファイルを作製し、各ブログの設定ファイルに項目が無いときは、共通の設定ファイルの項目を読み込むという設定に変更しました。
これからもより安定して、お使いいただけるように工夫していきたいと思います。
よろしくお願いします。
mubon-blogのアップデート?4/18 修正に関するバグに関して。
カテゴリー:mubon-blog
FCK editorの設定ができていなかったためシングルクォーテーションが文中にある場合に正常に記事の修正ができない状態になっていました。
この問題についてはすでに修正済みです。
ご迷惑をおかけしました。
オフラインモードのWebアプリケーション動作に必要な4つの機能
カテゴリー:HTML & CSS
オフラインモードのWebアプリケーション動作に必要な4つの機能
Firefox 2.0のオフラインモードとは表示したページのデータをキャッシュするモードであり、この機能だけではオフラインでAjaxなどを駆使したGmail、ZimbraなどのWebアプリケーションを動かすことは、できません。
Chris Double氏はブログで以下のオフラインでWebアプリケーションを動作させるため、FireFoxは以下の4つの機能を備える必要があると述べています。
- DOM Storage .
- Offline Cache.
- Offline Events.
- JAR file Protocol.
[参考:Bluish Coder :Offiline Zimbra with Firefox]
なお上のアドレスの記事の一番下には、Firefox3のα vartionを使いオフラインでZimbraにログインしてメール機能を使いっている様子がアップされています。
こちら
ということで、この4つの機能について、簡単に調べてみました。
DOM Storage(client-side storage)
Mozilla Developer Centerに仕様に関するページがあったので、導入の説明部分だけ簡単に翻訳してみました。
DOM Storageメカニズムによって、「Stringのキーと値を対でセキュアに保存しておき、後で使用するときに取得する」、ということが可能になります。DOM Storageの目標はインターアクティブなアプリケーションを作成するための手段を総合的に提供することです。(これにはオフラインでの作業を可能にする機能を発展させることも含まれています。)
現在、Mozillaベースのブラウザのみ、動作するDOM Storageを実装しています。しかし、Internet Explorerも、これに似た"userData behavior"という機能を持っています。この機能によりInternet Exploreでも複数のブラウザのセッション間でデータを持ちまわることが可能です。
ブラウザの機能のみで適当な量のデータをいつでも保管しておく方法は存在していないため、DOM Storageは役立つでしょう。ブラウザのクッキーは容量に制限があり、また、系統だててデータを保管しつづける方法も提供されていません。そして他の(例えばFlash Local Storageなど)は余計なプラグ印を導入する必要があります。
......
......
[参考: Mozilla Developer Center:DOM:Storage ]
つまり、クライアントに情報をストーレジしておくための機能。
例えばメールアプリケーションだとメールやフォルダーなどの情報を、オンライン時にあらかじめストレージしておく。
「only Mozilla-based browsers provide a working implementation of the DOM Storage specification」
とあるように、Firefoxにはすでに実装されている。またIEにもuserData behavior使い対応することができる。
日本語のサイトで、これに関するデモを公開しているサイトがあったので紹介。
Young risk taker:IEとFirefox2.0以上で動作するClient Side Storage
Offline Cache
Webアプリケーションのためのキャッシュドライブ。(画像、ページ、などなどをキャッシュ)
キャッシュを読み込むためには、<link>要素に「a rel="offline-resource"」を記述する。
この機能はFirefox2には実装されていないが、Firefox3に導入される予定。
下記URLにてパッチが公開されている。
Add an API for putting resources in an offline cache
Offline Events.
ユーザがブラウザのメニューから、オフラインを選択したとき、あるいはネットワークの接続が切れたときに、オフラインとオンラインを切り替えるイベントを発生させる機能。
これはFirefox2には、まだ導入されておらず、Firefox3に導入される予定。
Firefoxの対応の現状と予定については下記URL。
Fire WHATWG DOM events when going online or offline
JAR file Protocol.
オフライン・キャッシュからjavaアプレットに取り込んで計算?ちょっとよく理解できなかったのでおいておきます。。
WHATWGによる標準化に関して
Robert O'Callahan氏が上で挙げた4つの機能の標準化に関してコメントしていたので、載せておきます。
これらのうち2つはすでにWHATWG specとなっていることに注目してください。さらにjar URI schemeは、すでに様々な製品で標準化されています。4つの中で、本当に新しい機能は<link rel="offline-resource">を使っている部分です。これは、アプリケーションを妨げることなく、保管された"offline cache"の中からresourceを取得します。これはとてもシンプルで、私たちは(導入するのに)正当な理由があるという自信があります。私達は、なんとかしてこれを標準化しようと思っています。また、私達はWebを前に進めるために、FirefoxでなくポピュラーなブラウザがこれらのAPIs ASAPをサポートすることを望んでいます。
[参考:Well, I'm Back: Offline Web Applications]
他にもオフライン機能に関する展望が述べられています。