2

バックボーン ルーティング、mod_rewrite、requirejs を使用しています。アプリは Web ルートではなくフォルダーにあるため、画像、css、および js ファイルには相対フォルダー参照が必要です (絶対フォルダーを使用できる場合、ファイルが読み込まれます)。

末尾にスラッシュがあるルートにアクセスすると、ヘッダーに適切なベース タグが設定されていない限り、js ファイルと css ファイルのいずれも正しく読み込まれません。そのようです:

<base href="//localhost/myapp/" /> 

このソリューションは機能します。問題は、コードの開発バージョンと製品バージョンを使用できるように、base タグを変数化する必要があることです。ただし、変数を使用して js ファイルをロードしても、ベース タグがないと機能しません。

念のため、バックボーンの標準的な修正を行いました。オプションのスラッシュ (/) を修正します。

routes: {
  'faq(/)':'jumpToText',
  'register(/)':'jumpToForm',
},

そして歴史に根を張る

Backbone.history.start({pushState: true, root: "//localhost/myapp/");

この問題は、解決できない mod_rewrite の問題のようです。したがって、最終的な考えは、base タグを動的に設定することです。

4

2 に答える 2

2

最終的には、JavaScript を使用して location.href から値を解析しました。head 内の script タグでこのコードをラップします。

document.write("<base href="+'//'+document.location.host +'/'+ location.href.split('/')[3]+'/'+" />");

そして、routes.jsで同じことをしました(uriを解析します)

Backbone.history.start({pushState: true, root: "/"+location.href.split('/')[3]});
于 2013-12-01T03:27:58.557 に答える