3

たとえば、domain.comというWebサイトがあります。pushstateとfallbackを備えたbackbone.jsがあり、domain.com / aboutにアクセスすると、index.htmlページとpushstatesが約に読み込まれます。すべてが機能しています。しかし、たとえばwww.domain.com/bio/moreinfoのようなページが含まれているディレクトリに移動したい場合、それは機能せず、無効なページをスローします。IEで実行すると、正常に動作します。私のhtaccessファイルには次のものがあります。

RewriteEngine on
# html5 pushstate (history) support: 
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]
</ifModule>

domain.com/bio/moreinfoページに直接移動すると、クラップスになります(サーバーがバイオディレクトリに移動したいのでしょうか?それとも、バックボーンのルートを実際に別の方法で制御する必要があるのでしょうか?それは前髪で機能するだけですしたがって、#bio/infoが/bio/infoとapacheと同じではない奇妙なプッシュ状態ディレクトリのものである必要があります。助けていただければ幸いです。

4

1 に答える 1

2

<base href="/" /> index.htmlファイルで行うことであった別の提案された投稿の答えをうまく使用し ます。これにより、pushStateのサブディレクトリが実際に機能するようになりました。提案されただけですが、その見返りにIEが壊れましたが、バックボーンのINITに追加のコードを追加して修正しました

 Backbone.history.start({ pushState: Modernizr.history, silent: true });
if(!Modernizr.history) {
    var rootLength = Backbone.history.options.root.length;
    var fragment = window.location.pathname.substr(rootLength);
    var search = window.location.search;
    Backbone.history.navigate('/#' + fragment + search, { trigger: true });
} else {
    Backbone.history.loadUrl(Backbone.history.getFragment())
}
于 2013-01-24T02:02:13.663 に答える