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,我想避免完全。有没有人知道问题出在这里?
在此先感谢...
也许您已将“#”添加到您在hrefs中添加的网址中? Backbone不会为视图组件(例如按钮)生成URL。 –
好吧,我删除了“#”,是的,现在它已经没了,但现在我得到404错误... – SHT
然后你的服务器没有正确管理URL路由(假设你还没有定义404错误的骨干路由)。 –