如何将GET参数替换为友好的URL?

时间:2018-12-11 18:54:22

标签: node.js express

我对ExpressJS路由有疑问。

我正在使用此插件进行本地化i18n-express

一切正常,但是我该如何更改

site.com/?clang=es site.com/es 吗?

也许我需要对某些配置使用 .htaccess 还是? 提前致谢。

3 个答案:

答案 0 :(得分:1)

很遗憾,该模块本身不支持您所需要的内容,尽管我发现您对此有疑问。

在他们修复该问题之前,您可以采取的一种变通办法是添加一个采用该参数并将其移至预期位置的中间件。在i18n中间件之前注册该中间件,它应该可以工作:

      app.param(“lang”, (req, res, next, id) => {
               req.query.clang = id; // or put it in the header
               next();
      });

然后,您需要将所有路由挂载为/:lang /任何

答案 1 :(得分:0)

重定向应该在这里完成。您可以尝试smth。如果您需要的话,也是如此。

app.get('/', function(req, res) {
  let clang = req.query('clang');
  if (!!clang) {
    res.redirect('https://your.site/' + clang);
  }
});

要捕获所需的路线,请使用以下代码。

app.get('/:language', function(req, res) {
  let lang = req.param('language');
});

答案 2 :(得分:-1)

比操作.htaccess简单得多。您需要做的是这样:

app.get('/:lang', function (req, res) {
  console.log("choice lang is " +req.params.lang); // Should receive what you send as route param
});

希望这会有所帮助!