2012-12-17 55 views
0

我想爲我的骨幹和苗條的Web應用程序配置htaccess。骨幹和苗條的框架重定向路由htacces

這裏是我的根網址:mysite.com/myproject/

這裏是我如何安排我的目錄:

directories

  • server.php,在這裏我使用超薄框架,定義我的 '路線'
  • 一個包含Slim框架的目錄叫做data
  • 一個目錄中包含我叫主幹應用js

我願做一些像mysite.com/myproject/post s到讓我的帖子的完整列表 或mysite.com/myproject/post/:id得到一個職位

我知道,我可以使用重定向到「模擬」不存在的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

+0

通常,您將在Apache中配置'VirtualHost'指令,但虛擬主機配置無法在'.htaccess'中定義。你有權修改服務器配置('httpd.conf')嗎?請參閱:http://httpd.apache.org/docs/2.2/vhosts/examples.html – jevakallio

+0

thk的答覆,但沒有我不能訪問httpd.conf.i'm試試這個因爲我跟隨這個答案http ://bit.ly/qVSQgx在stackoverflow – akio

+0

而我正在使用這個教程http://bit.ly/Zdb3Iv並用主幹的CRUD方法替換jquery ajax調用。 – akio

回答

0

它聽起來像你需要做的是創建一個rewrite rulemysite.com/posts而不是301或302重定向。

所以你會讓你的服務器重寫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結構工作)。

+0

我會盡快嘗試。 骨幹,如果我這樣設置我的路線'/myproject/server.php/post'它像一個魅力工作。 但我認爲這樣做很骯髒。這就是爲什麼我會'/ myproject/post'替換'/myproject/server.php/post' – akio