0

バックボーンとスリム Web アプリケーション用に htaccess を構成しようとしています。

ここに私のルートURLがあります: mysite.com/myproject/

ディレクトリを整理する方法は次のとおりです。

ディレクトリ

  • server.php、ここで Slim フレームワークを使用し、「ルート」を定義します
  • と呼ばれる Slim フレームワークを含む 1 つのディレクトリdata
  • と呼ばれるバックボーン アプリを含む 1 つのディレクトリjs

s のようなことをしmysite.com/myproject/postて、投稿の完全なリストを取得したりmysite.com/myproject/post/:id、1 つの投稿を取得したりしたい

リダイレクトを使用して、存在しない URL を「シミュレート」できることを知っています。理論的には、試してみるとmysite.com/posts、Apache/は自分の「ルート」がやりたいことを実行する場所に.htaccessリダイレクトし、結果をバックボーンに返します。server.php

しかし、私が試したことは何でも、うまくいくようです。

編集

解決策の一部を見つけました。

htaccess と server.php ファイルをデータ ディレクトリに移動しました。

ここに私のserver.phpファイルがあります

<?php
    require_once("Slim/Slim.php");
    $app = new Slim();

    $app->get('/posts','getPosts');
    $app->get('/post/:id','getPost');

    $app->run();

    function getPosts() { echo "Hello world, get post list"; }
    function getPost($id) { echo "Hello world, get one post = ".$id; }
?>

これが私のバックボーンコレクション宣言です

window.PostList = Backbone.Collection.extend({
        model : Post,
        url:"data/posts",

        initialize : function() {
            console.log ("collection created.")
        }
    });

そして.htaccessファイル

RewriteEngine On
RewriteBase /myproject/data
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ server.php [QSA,L]

fetch methodバックボーン上で、リクエストが送信され、http://mysite.com/myproject/data/posts コンソールにレスポンスが表示されますHello world, get post list

mysite/myproject/posts しかし、どの値のようなリクエストを行うことはできませんRewriteBaseか? のどの値backbone collectionですか?

4

1 に答える 1

0

301 または 302 リダイレクトの代わりに書き換えルールを作成する必要があるようです。mysite.com/posts

mysite.com/postsしたがって、サーバーを server.php に書き換えます。この方法/postsはまだ URL です。

次に、バックボーンルーターを初期化して起動し、処理方法を理解します/posts

var my_router = new (Backbone.Router.extend())();
my_router.route('/path/:id', show_post);
Backbone.history.start({pushState: true, root: '/});

または似たようなもの。

秘訣は、ブラウザーの URL が、Backbone にルートが通知されているものと一致する必要があることです。その後、ルートはサーバーから呼び出されなくなりますが、リロードする必要がある場合やゼロから取得する必要がある場合は、ルートをサポートする必要があります。

これを処理する最善の方法は、実際に書き換えルールを次のようにすることです。

RewriteRule ^/posts/(.*?)    server.php?post=$1 [L,R]

(または、server.phpスクリプトがどのように機能し、URL 構造をどのように機能させたいかによって異なります)。

于 2012-12-17T16:02:35.717 に答える