我需要使用 Apache 2.4 中的一些用户代理。我在 Google 上搜索了很多示例,尝试了无数正则表达式选项,但仍然不起作用:
<If "%{HTTP_USER_AGENT} == '/^.*(Google|bing|Windows|Gecko).*$/'">
Require all granted
</If>
同时,RegExp 本身也可以正常工作(参见https://regexr.com/7lar4)并且它明确指出了我错误的自制 Apache 语法。
这也是我已经尝试过的:
<If "%{HTTP_USER_AGENT} == '^.*(Google|bing|Windows|Gecko).*$'">
Require all granted
</If>
<If "%{HTTP_USER_AGENT} == '~/^.*(Google|bing|Windows|Gecko).*$/'">
Require all granted
</If>
诸如此类。但都不起作用。
请指教!
答案1
又浪费了一个小时后,我可以说正确的语法是:
<FilesMatch ".+\.(?=(doc|docx|pdf|ppt|rtf|xls|xlsx)$)[^\.]+?$">
<If "%{HTTP_USER_AGENT} =~ /^.*(Googlebot|Google-InspectionTool|GoogleOther|GoogleOther|bingbot|YandexBot|YandexImages|YandexMetrika|YandexWebmaster|Baiduspider).*$/">
Require all granted
</If>
</FilesMatch>
此配置部分将允许主要机器人抓取办公文件。
需要 Apache 2.4。