获取.htaccess以允许访问指定的IP,但是如果来自任何其他IP,则请求.htpasswd用户+密码

sam*_*sam 3 apache authentication .htaccess .htpasswd

香港专业教育学院有一个网站,我试图设置.htaccess / .htpasswd密码限制,但同时允许具有特定IP地址的任何用户访问。

到目前为止,我已经在我的.htaccess文件中按以下方式实施了此操作,但是出于某种原因,如果我访问了该站点,无论它允许从哪个IP地址访问该站点,如果我注释掉了该行order deny,allow上方的Allow from 192.87.22.18行,都可以使用密码保护可以,但是即使从192.87.22.18IP进行访问,也会要求所有人提供IP(注意-不是我的真实IP)

(由于明显的原因,我没有发布我的.htpasswd文件,但这是1行,其中包含1个哈希密码)

有任何想法吗 ?

<Files ~ "^\.(htaccess|.htpasswd)$">
    deny from all
    </Files>

    DirectoryIndex index.php
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(www\.example\.example\.co\.uk)(:80)? [NC]
    RewriteRule ^(.*) http://example.example.co.uk/$1 [R=301,L]
    order deny,allow

    <Files ~ "^\.(htaccess|.htpasswd)$">
    deny from all
    </Files>
AuthType Basic
AuthName "Please enter your ID and password"
    AuthUserFile /var/www/vhosts/example.co.uk/subdomains/example/httpdocs/.htpasswd
    AuthGroupFile /dev/null
    require valid-user 
    order deny,allow
    Allow from 192.87.22.18
    # satisfy any

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^index\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]
    RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]
    RewriteRule .? %{ENV:BASE}index.php [L]
Run Code Online (Sandbox Code Playgroud)

sam*_*sam 5

经过反复试验,我最终使用了以下适用于apache 2.0的内容,网址为:https : //perishablepress.com/htaccess-password-protection-tricks/

在上面的文章中,他们包装了<IfModule mod_auth.c> 导致代码无法运行的代码块(因为我猜if块在此服务器上等于false),因此我将其删除。

    # password protect excluding specific ip
 AuthName "Username and password required"
 AuthUserFile /home/path/.htpasswd
 AuthType Basic
 Require valid-user
 Order Deny,Allow
 Deny from all
 Allow from 111.222.333.444
 Satisfy Any
Run Code Online (Sandbox Code Playgroud)