如何从没有尾部斜杠的页面重定向到带有斜杠的页面

时间:2012-10-13 22:25:06

标签: sammy.js

我有一个在knockout.js应用程序中运行的sammy.js。我正在尝试重定向缺少尾部斜杠的路由(例如/#/stop/1/100032)我想将所有缺少尾部斜杠的页面重定向到带有斜杠的页面。

为了使事情复杂化,我想在没有这样的路线的情况下有一个错误页面。

function RoutesViewModel () {
    var self = this;

    self.router = Sammy(function () {
        this.get('/#/stop/:agency_id/:stop_id/', function () {
            app.page.state('bus');
            app.stop.setCurrentById(this.params['agency_id'], this.params['stop_id']);
            mixpanel.track('stop page load', {
                'route': '/#/stop/' + this.params['agency_id'] + '/' + this.params['stop_id'] + '/',
            });
        });
        this.get('/(.*[^\/])', function () {
            this.redirect('/',this.params['splat'],'/');
        });
    });

    self.router.error = function (message, error) {
        app.page.header("Unable to find your page");
        app.page.message("The page you've requested could not be found.<br /><a href=\"/\">Click here</a> to return to the main page.");
    }

    self.run = function () {
        self.router.run();
    }
}

以上是我到目前为止所选择的路线。不幸的是,当我转到上面的示例网址时,页面会加载错误,而不是正确的/#/stop/1/100032/

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,但我也遇到过这个问题。

根据http://sammyjs.org/docs/routes路由是正则表达式。所以这对我有用:

this.get('#/foo/:id/?', function() {