【问题标题】:How to change config variable based on the url如何根据 url 更改配置变量
【发布时间】:2018-01-05 03:36:54
【问题描述】:

我有两个网站,websiteEN 和 websiteDE。 它们都托管在自己实例上的 EC2 上。 他们的网址是:website.en 和 website.de 他们使用自己的数据库网站ENDB 和网站DEDB。

我目前在 AWS 上为他们的数据库使用环境变量。

为了省钱,我想在同一个实例上托管这两个网站。 我需要从用于浏览网站的 url 中获取数据库名称。

如何使用 express 服务器获取 url 并将其传递给我的配置变量?

编辑: 例如,假设我有 config.websiteDB = defaultDB 如果用户从 website.de 访问网站,我想要 config.websiteDB = websiteDEDB,如果她从 website.en 访问网站,则 config.websiteDB = websiteENDB

【问题讨论】:

  • 需要更多信息:两个网站的代码库相同吗?你在使用 npm 配置模块吗?还有什么可能相关的吗?
  • 谢谢吉姆!两个网站都有相同的代码库,我没有使用 npm 配置模块。更多详细信息已添加到主帖中。
  • 那你为什么不能把 mongodb url 放在配置中呢?
  • 我想根据网站访问者使用的 url 更改 mongodb url。 (.com 或 .de)
  • Mongoose 并没有真正为此设置,但您可能会在这里找到答案:stackoverflow.com/questions/19474712/…

标签: node.js amazon-web-services express


【解决方案1】:

这是我们如何解决的。

我们用过,

https://github.com/mashpie/i18n-node

此外,您可以使用相同的 html 模板文件,但不同语言的内容不同。

根据从浏览器接收到的语言,您可以选择合适的数据库。

希望对你有帮助。

EDIT1:

如果您在下面进行检查,您可以根据 cookie、查询字符串参数、语言内容不可用时的回退等设置您的语言环境,

i18n.configure({
    // setup some locales - other locales default to en silently
    locales:['en', 'de'],

    // fall back from Dutch to German
    fallbacks:{'nl': 'de'},

    // you may alter a site wide default locale
    defaultLocale: 'de',

    // sets a custom cookie name to parse locale settings from - defaults to NULL
    cookie: 'yourcookiename',

    // query parameter to switch locale (ie. /home?lang=ch) - defaults to NULL
    queryParameter: 'lang',

    // where to store json files - defaults to './locales' relative to modules directory
    directory: './mylocales',

要将 cookie 设置为所需的语言,

res.cookie('yourcookiename', 'de', { maxAge: 900000, httpOnly: true });

也可以使用查询字符串参数

/home?lang=ch

其中 lang 被定义为语言环境配置参数。

【讨论】:

  • 感谢卡奈扬。这在我的情况下不起作用,因为我希望有人能够访问任何网站并查看其特定 url 的内容。使用您的解决方案,德国人只能看到德语内容,但如果他想看到美国内容怎么办?
  • 它涵盖了您想要在 express 下配置多语言网站的任何方式。将更新答案。
猜你喜欢
  • 2021-04-11
  • 1970-01-01
  • 2018-10-30
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
相关资源
最近更新 更多