通过 Apache 将特定用户代理限制为 Internet Explorer?

Limiting Specific User Agent to Internet Explorer via Apache?

我正在尝试将我的站点限制为仅允许具有以下内容的用户代理能够访问我的站点:

Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

目前在我的 .htaccess 文件中 (/var/www/html/) 我有以下内容:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko [NC]
RewriteRule ^ - [F,L]

通常,CondPatternRewriteCond 指令的第二个参数)是一个正则表达式。因此,您需要将其转换为正则表达式 - 值得注意的是,您需要 backslash-escape 文字点和 spaces。但是,改用字典序相等运算符会更容易,即。 = 前缀。然后匹配文字字符串,而不是正则表达式。

spaces 在 user-agent 字符串中是一个特例,因为 space 是 Apache 配置文件中的参数分隔符。这些要么需要反斜杠转义(如果使用正则表达式,则使用 \s shorthand 字符 class),或者用双引号将整个参数括起来。

请尝试以下操作:

RewriteCond %{HTTP_USER_AGENT} "!=Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
RewriteRule ^ - [F]

L 标志不需要 F 标志 - 它是隐含的。如果您特别只想允许那个 user-agent 那么您不需要条件上的 NC 标志。