当我们使用特定网址到达目标网页时,我正在努力将用户重定向到默认页面,我想知道在哈希之后获得该值的最佳方式。
例如: 着陆页网址为: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如何在上面的例子中获得价值小狗?
答案 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' ]
}
希望这有用!