如果 URL 包含特定关键字,是否使用 htaccess 重定向用户?

如果 URL 包含特定关键字,是否使用 htaccess 重定向用户?

我需要帮助来设置.htaccess执行以下操作的内部规则:

每当请求的 URL 包含关键字时love,就将用户重定向到另一个 URL 或者显示 404 页面。

进一步澄清一下:如果有人尝试访问此 URL -->www.example.com/lovewww.example.com/?love任何包含单词 love 的 URL 都应重定向到 404 页面。

答案1

您需要分别处理路径中的匹配和查询字符串中的匹配,因为 Apache 不提供同时包含两者的变量。第一个重写规则这里匹配路径中的“love”,第二条规则受重写条件在查询字符串中匹配“love”。

RewriteRule .*love.* - [R=404]

RewriteCond %{QUERY_STRING} .*love.*
RewriteRule .* - [R=404]

答案2

每当请求的 URL 包含关键字“love”

如果您想要排除包含这些字母的单词作为子词,例如“glove”、“slovenly”、“cloves”等,那么您需要在正则表达式中加入单词边界,例如\blove\b

THE_REQUEST您还可以通过检查包含 URL 路径和查询字符串的服务器变量,使用单个规则执行此操作。

例如:

RewriteEngine On

RewriteCond %{THE_REQUEST} \blove\b
RewriteRule ^ - [R=404]

答案3

RewriteRule ^(.+?)www.domain.com.*\.love/.*$ - [R=404]

相关内容