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

时间:2017-01-30 04:30:35

标签: apache .htaccess redirect mod-rewrite keyword

我的服务器日志显示,我网站的访问者经常输入导致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。问题是我想重定向"下载"和"下载"关键字,无论他们可能遵循哪个子目录。例如,我想重定向所有以下情况:

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

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

所以我想重新定位关键字搜索" download"或"下载"在https://mydomain.jp/en/download.html下的任何子目录之后使用这两个关键字中的任何一个时,我的英语语言下载页面(/en/)仅 ,例如:

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

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

我如何做到这一点?

1 个答案:

答案 0 :(得分:1)

这应该为您完成,放在您的根.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]

如果匹配第一条规则,则第二条规则将无法运行,从而实现了匹配/en/范围内任意内容的目标。

任何问题都让我知道。