使用 RewriteRule 从任何子目录重定向关键字

Keyword redirect from any subdirectory using RewriteRule

我的服务器日志显示我网站的访问者经常键入导致 404 的常见关键字,我想将其中一些关键字重定向到我网站中有意义的页面。

我的 .htaccess 文件当前包含以下内容:

RewriteEngine On
RewriteRule ^download.*$ https://mydomain.jp/jp/download.html [R=301,L,QSA]

因此,如果有人在浏览器中键入 mydomain.jp/downloadmydomain.jp/downloads,他们将被重定向到 mydomain.jp/jp/download.html。问题是我想重定向 "download" 和 "downloads" 关键字 而不管它们可能跟随的子目录 。例如,我想重定向以下所有情况:

mydomain.jp/jp/downloads
mydomain.jp/jp/download
mydomain.jp/jp/products/download
mydomain.jp/jp/A/B/C/downloads

但这还不是全部。我的网站有两个语言版本,英语完全包含在 /en/ 子目录中,该子目录有自己的下载页面语言版本。

所以我想将 "download" 或 "downloads" 的关键字搜索重定向到我的英语下载页面 (https://mydomain.jp/en/download.html) /en/ 下的任何子目录之后使用这 2 个关键字,例如:

mydomain.jp/en/downloads
mydomain.jp/en/products/download
mydomain.jp/en/A/B/C/downloads

在根目录或除 /en/ 以外的任何子目录 中搜索 "download" 或 "downloads" 的任何关键字都应重定向到我的日语下载页。

我该如何完成?

这应该为您完成,放在您的根 .htaccess 文件中,并替换您当前的规则:

RewriteEngine on
RewriteRule ^en/.*(?<=/)downloads?$ https://mydomain.jp/en/download.html [R=301,L]
RewriteRule (?:/|^)downloads?$ https://mydomain.jp/jp/download.html [R=301,L]

如果第一个匹配,则第二个规则不会 运行,实现 objective 匹配 /en/.

之外的任何内容

有任何问题请告诉我。