如何从网址

时间:2017-03-01 01:12:35

标签: apostrophe-cms

当我们使用特定网址到达目标网页时,我正在努力将用户重定向到默认页面,我想知道在哈希之后获得该值的最佳方式。

例如: 着陆页网址为:http://www.google.com 但是当用户访问http://www.google.com/#puppies时,他们会被重定向到http://www.google.com/admin/signup

我创建了一个名为my-redirect的自定义模块,index.js的代码如下所示

module.exports = {
    construct: function(self, options) {
        self.pageBeforeSend = function(req, callback) {
            console.log("URL",req.absoluteUrl);
            return callback(null);
        };
    }
};

问题是即使用户访问http://www.google.com

,console.log也会打印http://www.google.com/#puppies

如何在上面的例子中获得价值小狗?

1 个答案:

答案 0 :(得分:2)

这不是一个撇号问题,而是一般的网络开发问题。哈希及其后的所有内容都不会被Web浏览器发送到Web服务器。

这可以追溯到JavaScript之前的日子,当时哈希仅用于跳转到#34;命名锚点#34;在页面的某个地方。

因此,浏览器端JavaScript始终有责任使用哈希值(或忽略它)。

你可以写:

if (window.location.hash === '#puppies') {
  window.location.href = '/admin/signup';
}

非常简单!

你也可以使用任意数量的前端路由器用于jQuery,或者像VueJS或React这样的前端框架(React路由器配置为使用哈希),但对于这个简单的任务来说是过度的。

当然,您可以将此代码放在脚本标记中,或者您可以在一个JavaScript文件中执行此操作,然后推送"与撇号。您可以将代码放在相对于项目的lib/modules/apostrophe-assets/public/js/site.js文件中(不要修改撇号npm模块),并将其添加到app.js中的模块配置中:

apostrophe-assets: {
  scripts: [ 'site' ]
}

希望这有用!