【问题标题】:How to use rewrite condition to redirect when language prefix is added to URL in multilingual site如何在多语言站点中将语言前缀添加到 URL 时使用重写条件进行重定向
【发布时间】:2023-04-10 19:08:02
【问题描述】:

我正在运行 3 种语言的多语言 Joomla 网站。 我的网站被配置为不使用默认语言的语言前缀。 我决定改变这一点,现在使用语言前缀作为我的默认语言。

我当前的 URL 示例如下所示:

  • 默认::mysite.com/forum
  • 英文:: mysite.com/en/forum
  • 斯洛伐克语:: mysite.com/sk/forum

我想要这样的网址:

  • 默认:: mysite.com/cz/forum
  • 英文:: mysite.com/en/forum
  • 斯洛伐克语:: mysite.com/sk/forum

我正在努力弄清楚如何为默认语言设置 301 重定向。 我不能在斜杠后明显重定向所有请求,因为它会重定向所有内容。

是否可以在 htaccess 中使用重写条件来实现我的目标?

【问题讨论】:

    标签: .htaccess mod-rewrite joomla3.0


    【解决方案1】:

    您可以使用 root .htaccess 与:

    RewriteEngine on 
    
    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ - [L]
    
    RewriteCond %{REQUEST_URI} !^/(?:cz|en|sk)/
    RewriteRule ^([^/]+(/.*)?)$ /cz/$1 [R=301,L]
    

    【讨论】:

    • 是的,但 /forum 链接只是一个示例。我有 100 个默认语言的 URL /category1 /category2 等等。
    • 感谢您分享此内容,但它对我不起作用。该规则每次都会创建不定式循环,除非 cz|en|sk 是 URI 的一部分。循环包含类似:/usr/www/users/betatn/cz/
    • 您复制粘贴此代码,并仅在您的根 .htaccess 中使用该代码?因为它重定向到 cz... 我现在只添加一个 /。
    • 谢谢你的作品!在我的 .htaccess 中还有另一条规则(这来自 Joomla .htaccess 发行版)RewriteCond %{REQUEST_URI} !^/index\.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php [L] 你的重定向规则会在没有任何冲突的情况下使用吗?
    • 你的规则没问题。它们对于将丢失的页面重定向到索引很有用。感谢您“接受”我的回答...
    【解决方案2】:

    没有必要在 .htaccess 中添加任何规则 - 你去:

    yoursite.com/administrator > 插件 > 系统 - 语言过滤器 > 删除 URL 语言代码:将其设置为否

    现在主要(默认)语言显示您要求的语言代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-24
      • 2013-08-06
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      相关资源
      最近更新 更多