htaccess 将根和子文件夹语言页面重定向到 /en

Posted

技术标签:

【中文标题】htaccess 将根和子文件夹语言页面重定向到 /en【英文标题】:htaccess to redirect root and subfolders language pages to /en 【发布时间】:2021-04-14 22:29:33 【问题描述】:

我想使用 htaccess 将 www.domain.com/?lang=en 页面重定向到 www.domain.com/en/ 子文件夹。我已经尝试了下面的代码,但是我的 htaccess 规则没有考虑带有 www.domain.com/folder/?lang=en 或 www.domain.com/folder/subfolder/?lang=en 等子文件夹的 url。只有根页面从 ?lang=en 更新为 /en/。

(KO) domain.com/?lang=en > domain.com/en/

(KO) domain.com/folder/?lang=en > domain.com/en/folder/

(KO) domain.com/folder/folder2/?lang=en > domain.com/en/folder/folder2/

这是我迄今为止尝试过的:

# BEGIN LANGUAGE REDIRECTION
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %QUERY_STRING lang=en
# exclude all requests starting with /wp-admin/
RewriteCond %REQUEST_URI !^/wp-admin/.*$
RewriteRule ^(.*) /en/$1? [L,R=301]
</IfModule>
# END LANGUAGE REDIRECTION

【问题讨论】:

【参考方案1】:

根据您显示的示例,您能否尝试以下操作。请确保在测试 URL 之前清除浏览器缓存。这将重定向/重写并在您的 URI 之前添加语言 en 在您的情况下(根据显示的示例)。

RewriteEngine ON
RewriteCond %QUERY_STRING ^lang=(.*) [NC]
RewriteRule ^(.*)$ %1/$1 [R=301,NE,QSD,L]

【讨论】:

以上是关于htaccess 将根和子文件夹语言页面重定向到 /en的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess:将根URL重定向到子目录,但保留根URL

301 重定向 - 根文件夹和子文件夹的不同位置

从 URL 中删除 2 个文件夹并重定向到页面

.htaccess 重定向到 404 页面 RewriteRule

我如何 .htaccess 301 将所有页面/文件(除了一个)重定向到新域?

使用 .htaccess 从旧页面重定向到新页面