【问题标题】:How can i redirect /?lang=en|ru to /?lang=en#googtrans(en|ru)?如何将 /?lang=en|ru 重定向到 /?lang=en#googtrans(en|ru)?
【发布时间】:2021-08-25 19:25:19
【问题描述】:

如何添加谷歌翻译参数#googtrans(en|de) 或其他语言,以便自动翻译?

基本上,当用户转到https://example.com/page/?lang=de 时,他们会被重定向到https://example.com/page/?lang=en#googtrans(en|de)

我使用这个 .htaccess 规则,但它不起作用:

RewriteCond %{QUERY_STRING} ^lang=([a-z]{2})$
RewriteRule ^/?lang=en#googtrans(en|[a-z]{2}) [R=301,L]

【问题讨论】:

  • 除非对“en”进行特殊处理,否则此处的描述不可行,因为像^/?lang=en#googtrans(en|xx) 这样的请求也会匹配重定向规则并再次重定向。请通过编辑问题来澄清实际意图
  • 此外,Apache 永远不会收到片段 (#blah),任何包含它的规则都不会匹配任何内容

标签: .htaccess redirect mod-rewrite query-string


【解决方案1】:

编辑:在此处添加已编辑的规则。

RewriteEngine ON
RewriteCond %{THE_REQUEST} \s/page/?\?lang=([a-z]{2})\s [NC]
RewriteRule ^ page/?lang=%1#googtrans(%1) [R=301,L,NE]


使用您显示的示例(考虑到您在浏览器中访问的 URL 如下:https://example.com/page/?lang=de),请尝试遵循 .htaccess 规则文件。请确保在测试您的 URL 之前清除您的浏览器缓存。

RewriteEngine ON
RewriteCond %{QUERY_STRING} ^lang=([a-z]{2})$ [NC]
RewriteRule ^page/?$ page/?lang=%1#googtrans(%1) [R=301,L,NE]

【讨论】:

  • 谢谢 - 我试过了,但没用......它仍然在example.com/page/?lang=de
  • @Dalv,哦,好吧,我以为你不想重定向。请立即尝试我编辑的规则,让我知道结果如何。
  • 谢谢,我想我们快到了。有两个问题: 1. 重定向发生在根域 - 我只需要 example.com/page/?lang=de 重定向到 example.com/page/?lang=en#googtrans(de) 2. 第二个问题是 '#' 字符在 URL 中显示为 %23。
  • @Dalv,当然,我现在已经解决了这两个问题。请检查一次,让我知道它是怎么回事,确保在测试你的 URL 之前清除浏览器缓存。
  • @Dalv,你能不能试试我的编辑规则,让我知道。
猜你喜欢
  • 2019-11-07
  • 1970-01-01
  • 2014-09-16
  • 2020-07-02
  • 2023-03-27
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多