简体   繁体   中英

sammy.js url not found cause of subdirectory

Hi I create a spa with knockout, amplify and sammy.

If I now click an a link like:

#/page?s=About

it links to url.de/subdirectory/#/page?s=About which is right but the console fires following error: GET url.de/About 404 (Not Found) because it should be: url.de/subdirectory/About

My sammy code is:

var app=$.sammy(function () {

        // define prexecutes

        // update parameters in appModel from request for all routes
        this.before('', function() {
            //setParameters(this);
        });

        // authenticate on any page except for login and logout routes
        this.before({except: {path:/\/(login|logout|hp)/}}, function() {

        });

        // actual routes

        // home

        this.get('#/', function() {
            appModel.page("home");
            return false;
        });

        // content

        this.get('#/page', function(eventContext) {

            content(eventContext);
        });

    });

    app.run('#/');

How do I get sammy not ignoring my subdirectory in which my site is?

You can try with another custom route definition like this

this.get('#/page/:s', function(eventContext) { // where s is parametre

            content(eventContext);
        });

also use url like this

#/page/About  // it will read 'About' as value of parameter 's'

instead of

#/page?s=About

Hope this helps

I ran into a similar situation myself recently. I could not find any configuration options or workarounds that would allow Sammy.js to route to a subdirectory. My solution was to create a virtual host on the server hosting my app with the subdirectory as the subdomain in order to place the app at the document root. In your case, the virtual server would map from url.de/subdir/About to subdir.url.de/About . I realize that this may not be possible for you (since I don't know how much control you have over your hosting environment), but it got me moving again pretty quickly. Hope this helps.

PS As a small aside, I just browsed through the Sammy.js source at https://github.com/quirkey/sammy , and it appears that the subdirectory is stripped out (in error) to fix an IE quirk. https://github.com/quirkey/sammy/blob/master/lib/sammy.js#L301 may be the problem.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM