.htaccess允许来自特定用户代理的所有内容

ada*_*ven 15 .htaccess user-agent

我有一个我正在开发的网站,它也将被纳入网络应用程序.我的.htaccess文件中有以下代码,以防止来自任何不在我允许的IP上的任何人的访问:

Order deny,allow
Deny from all
AuthName "Restricted Area - Authorization Required" 
AuthUserFile /home/content/html/.htpasswd 
AuthType Basic
Require valid-user
Allow from 12.34.567.89 
Satisfy Any
Run Code Online (Sandbox Code Playgroud)

问题:我想添加一条Allow from规则,该规则也允许特定的HTTP用户代理访问该站点.

如果不是用户代理,我发现此代码重定向:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !=myuseragent
RewriteRule ^files/.*$ / [R=302,L]
Run Code Online (Sandbox Code Playgroud)

但我似乎无法弄清楚如何将其变成Allow from规则.救命?

UPDATE

我发现下面的代码阻止了特定的用户代理......我想说"如果不是myuseragent,那就阻止".

<IfModule mod_rewrite.c>
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT
</ifModule>
Run Code Online (Sandbox Code Playgroud)

Edw*_*its 18

SetEnvIfNoCase User-Agent .*google.* search_robot
SetEnvIfNoCase User-Agent .*yahoo.* search_robot
SetEnvIfNoCase User-Agent .*bot.* search_robot
SetEnvIfNoCase User-Agent .*ask.* search_robot

Order Deny,Allow
Deny from All
Allow from env=search_robot
Run Code Online (Sandbox Code Playgroud)

Htaccess SetEnvIf和SetEnvIfNoCase示例


小智 7

我只想允许一个SPECIFIC用户代理而不是试图阻止所有

这是我的配置只允许wget:

SetEnvIf User-Agent .*Wget* wget

Order deny,allow
Deny from all
Allow from env=wget
Run Code Online (Sandbox Code Playgroud)


Int*_*ess 5

Allow from并且Rewrite*是来自两个不同Apache模块的指令.

第一个是mod_authz_host和另一个mod_rewrite.

你可以mod_rewrite用来做你想做的事:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !=myuseragent
RewriteRule .* - [F,L]
Run Code Online (Sandbox Code Playgroud)