2017-01-30 57 views
1

我的服务器日志显示访客到我的网站经常键入导致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/子目录中,它有它自己的下载页面的语言版本。

所以我想重定向关键字搜索“下载”或“下载”我的英语下载页面(https://mydomain.jp/en/download.html只有当任的2个关键字的任何子目录后/en/下使用,如:

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

在根目录或比/ EN/其他任何子目录“下载”或“下载”任何关键字搜索应该重定向到我的日语下载页面。

我该如何做到这一点?

+0

如果你不介意我的话,我觉得你的评价是不准确的。用户不只是在网址上添加单词,以查看它们是否有效。这可能只是“僵尸”流量而不是真人,所以不值得这样做。检查用户代理以及404生成时是否下载(CSS等)来自404页面的关联资源,就像真实用户一样。 – SuperDuperApps

+0

谢谢你的评论。大多数输入“/下载”的人似乎都是真实的人。即使我自己也时常在网站上做,而且我不是黑客。但用户代理很难解释。例如,在我的网站上,“/wp-login.php”(显然由黑客完成)中的所有搜索(包括IP地址)中的90%以上都显示与我的日志完全相同的用户代理:“Mozilla/5.0 Windows NT 6.1; WOW64; rv:40.0)Gecko/20100101 Firefox/40.1“。其余的在日志中显示为“ - ”。 – JDW

+0

这就是为什么我建议也检查是否从页面下载相关文件,因为机器人将不太可能这样做。你检查了吗?你为什么说他们似乎是真实的人? – SuperDuperApps

回答

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/之内。

任何问题,让我知道。

+0

非常感谢您花时间编写代码。我证实它完美的作品。 – JDW