【问题标题】:Change domain depending on url path根据 url 路径更改域
【发布时间】:2016-05-27 10:16:48
【问题描述】:

我有一个多语言网站,可以在不同的域中工作,具体取决于语言。所有域共享相同的字体代码,网站 (Drupal) 使用路径确定语言。 现在我已经将每个域配置为重定向到自己的语言,所以我得到了:

  • www.example.com -> www.example.com/en
  • www.example.es -> www.example.es/es
  • www.example.ru -> www.example.ru/ru

这样,当用户进入网站时,cms 会将语言切换为与该域对应的语言。

我的问题是,当有人在网站上使用语言切换器时,它会更改所有查询参数以显示与该语言对应的内容不会更改域,所以,如果我是在www.example.com/en/something 并切换到西班牙语,我将以www.example.com/es/algo 结束。

我还需要根据语言更改域(在域名之后总是写成/en/es/ru),如果可能的话,保留查询参数。

我已经在 htaccess 中编写了这段代码(仅用于俄语,作为测试),但我担心它可能完全错误,因为它什么都不做:

  RewriteCond %{REQUEST_URI}  ^/ru$1
  RewriteRule ^$1 http://www.example.ru/ru$1 [L,R=301]

任何建议都会非常有帮助。

【问题讨论】:

  • 你从哪里得到代码?它有太多语法错误,在条件模式和重写模式中不允许使用 $1。
  • 是的,我担心我的 htaccess 语法知识几乎不存在,我就像实验室里的那条狗(我不知道我在做什么)。
  • 另一个问题指的是不同的问题,即使它们是相关的。

标签: apache .htaccess mod-rewrite url-redirection


【解决方案1】:

把这些放在你之前的规则之前:

RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^en/(.*)$ http://www.example.com%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} !^www\.example\.ru$
RewriteRule ^ru/(.*)$ http://www.example.ru%{REQUEST_URI} [L,R=301]

...

请注意,这样一来,例如用户输入www.example.ru/en/something,路径中的/en 将比主机名中的.ru 更重要,从而导致重定向到www.example.com/en/something

【讨论】:

  • 这正是我需要的,/lang参数强制重定向到相应的域,非常感谢!
  • 一件事。它在所有页面中都很好用,但在主页中没有重定向,您知道是什么原因造成的吗?
  • 我需要一个确切的例子:你在地址栏中输入了什么,你想重定向到哪里
  • www.example.es/en(没有别的)应该去 www.example.com/en。现在,当 /en/ 之后还有其他东西时,它就会崩溃
  • 啊,好的,那是因为 RewriteRule 中的斜线:^en/(.)$,删除它,你应该没问题(但是如果用户输入类似 www.example.en/estimate 的内容,它可以被视为西班牙语因为/es。如果这是问题所在,我可以尝试寻找解决方法。
【解决方案2】:

mod_rewrite 使用正则表达式。 $1 是指需要在匹配部分“定义”的组(使用括号和. 作为“匹配所有”运算符):

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ru(.*)$ http://www.example.ru/$1 [L,R=301]

【讨论】:

  • 它在主页上运行良好,如果我转到 www.example.com/ru,它会将我重定向到 www.example.ru/ru,但如果我在不同的页面中,例如 www。 example.com/en/something 它将我重定向到 www.example.ru//something(没有语言参数)。
猜你喜欢
  • 2021-10-14
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
  • 2015-07-20
  • 2019-12-04
  • 2021-07-05
  • 1970-01-01
  • 2011-03-16
相关资源
最近更新 更多