2014-03-24 159 views
0

我使用PHP MVC Codeigniter作爲後端和BackboneJS作爲我的應用程序的前端。我使用pushState:true-功能,並將以下代碼添加到我的根index.php,以便在嘗試重新加載URL或將URL發送給其他用戶時,我的頁面返回有效的URL。Codeigniter + BackboneJS路由問題

$url = preg_replace('/^myproject\//', '', ltrim($_SERVER['QUERY_STRING'], '/')); 

$urlPatterns = array (
'home', 
'nyheder', 
'artists' , 
'artists\/[a-zA-Z]', 
'releases', 
'live', 
'videoes' , 
'competitions' , 
'remix' , 
'[0-9]+' , 
'[0-9]+\/videos', 
'[0-9]+\/releases' 
); 

if(!(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')) { 
foreach ($urlPatterns as $pattern) { 
    $pattern = "/^{$pattern}$/"; 
    if (preg_match($pattern, $url)) { 
     readfile('application/views/home.php'); die(); 
    } 
    } 
} 

到目前爲止,它的工作原理,但只要我點擊右鍵,「在新標籤中打開」,它會自動添加一個#hashtag,我想避免完全。有沒有人知道問題出在這裏?

在此先感謝...

+0

也許您已將「#」添加到您在hrefs中添加的網址中? Backbone不會爲視圖組件(例如按鈕)生成URL。 –

+0

好吧,我刪除了「#」,是的,現在它已經沒了,但現在我得到404錯誤... – SHT

+0

然後你的服務器沒有正確管理URL路由(假設你還沒有定義404錯誤的骨幹路由)。 –

回答

0

我自己解決了這個問題!

除了設置pushState:true的我加入了根文件夾到我的<a href>標籤都有效,所以如果例如URL爲http://yoursite.dk/project - 鏈接在你的HTML必須是<a href="/project/(the target)"

這使得它的工作!