バックボーン ルーティングを処理しているときに、特有の問題に遭遇しました。
私たちのアプリは でホストされexample.com/photo/index.php
ており、トリガーされたときにアドレスバーに として表示されるイベントをフックしたいと考えていますexample.com/photo/<ID>
。以下は、書き換えルールとルーター設定をセットアップする方法です。
RewriteRule ^/photo/([0-9]+)?$ /photo/index.php/photo/$1 [L]
Backbone.Router.extend の内部:
routes: {
'photo/:ID': 'viewPhoto'
},
ルーターがインスタンス化された後:
$(function() {
Backbone.history.start({
pushState: 'pushState' in window.history,
root: '/'
});
});
これは Firefox/Chrome/Safari ではうまく機能しますが、IE9 では でイベント フックにアクセスする必要がありexample.com/photo/#photo/<ID>
、あまりクールではありません。
そのため、 () の pushState オプションを切り替えてみpushState: true
て、それが役立つことを願っていexample.com/photo/<ID>
ますが、IE9 でアクセスするたびに、代わりにページがリダイレクトされexample.com/#photo/<ID>
、実際には のコンテンツが表示されexample.com/index.php
ます。
多分(?) イベントフックのURLを のように変更すれば問題ないのですがexample.com/photo/view/<ID>
、その部分には触れられません。
pushState の有無にかかわらず、 、 、または IE9 で期待どおりに動作さexample.com/photo/<ID>
せるexample.com/#photo/<ID>
方法はありますか?example.com/photo/#<ID>