0

I'm trying to achieve urls in the form of http://localhost:9294/users instead of http://localhost:9294/#/users

This seems possible according to the documentation but I haven't been able to get this working for "bookmarkable" urls.

To clarify, browsing directly to http://localhost:9294/users gives a 404 "Not found: /users"

4

2 に答える 2

0

この記事で説明されているように、次の書き換えを使用しました。

http://www.josscrowcroft.com/2012/code/htaccess-for-html5-history-pushstate-url-routing/

于 2012-04-27T16:04:55.040 に答える
0

次のように、Spine で HTML5 History サポートをオンにすることができます。

Spine.Route.setup(history: true)

history: trueに引数を渡すと、Spine.Route.setup()ハッシュなしで派手な URL が有効になります。

このドキュメントは実際には少し埋もれていますが、ここにあります (最後から 2 番目のセクション): http://spinejs.com/docs/routing

編集:

直接ナビゲートできる URL を取得するには、この「サーバー」側を実行する必要があります。たとえば、Rails では、URL のパラメーター (この場合は「/users」) を取得し、それに応じて Spine に渡す方法を構築する必要があります。以下は、Spine ドキュメントからの抜粋です。

ただし、History API を使用する際に注意する必要があることがいくつかあります。まず、navigate() に送信するすべての URL には、実際の HTML 表現が必要です。その時点ではブラウザーは新しい URL を要求しませんが、その後ページがリロードされると要求されます。つまり、ハッシュ フラグメントのように任意の URL を作成することはできません。API に渡されるすべての URL が存在する必要があります。これを実装する 1 つの方法は、サーバー側のサポートを使用することです。

ブラウザーが (HTML 応答を期待して) URL を要求する場合、まずサーバー側でエンドポイントが存在し、有効であることを確認します。次に、URL を読み取り、適切なルートを呼び出すメイン アプリケーションを提供するだけです。たとえば、ユーザーがhttp://example.com/users/1に移動したとします。サーバー側では、URL /users/1 が有効であること、および ID が 1 のユーザー レコードが存在することを確認します。次に、JavaScript アプリケーションを提供するだけです。

このアプローチの注意点は、検索エンジンのクローラーに実際のコンテンツを提供しないことです。アプリケーションをクロール可能にしたい場合は、クローラー ボットのリクエストを検出し、それらに「コンテンツのパラレル ユニバース」を提供する必要があります。ただし、それはこのドキュメントの範囲を超えています。

これを適切に機能させるのは間違いなくかなりの労力ですが、実行できます。作業しているスタックを知らずに具体的な答えを出すことはできません。

于 2012-04-18T14:26:35.900 に答える