31

I have set up a site that is currently work in progress. I'm using an external SMS gateway that needs access to a script on my server. However, I have set up a basic username and password authentication for regular users, but the SMS gateway can't get through that.

How can I allow a single IP to pass through the authentication without authenticating itself, and deny all other users that aren't authenticated?

Here's my .htaccess file:

Order allow,deny
Allow from all
AuthType Basic
AuthUserFile /www/.site_htpasswd
AuthName "Protected Area"
require user admin
rebellion
  • 6,628
  • 11
  • 48
  • 79

3 Answers3

44

Just found out, with help from JoseK:

Order deny,allow
Deny from all
AuthType Basic
AuthUserFile /www/.site_htpasswd
AuthName "Protected Area"
require valid-user
Allow from 1.2.3.4
Satisfy Any
rebellion
  • 6,628
  • 11
  • 48
  • 79
35

UPDATE: As of Apache 2.4, Order, Allow, Deny, and Satisfy directives should not be used anymore. So the new syntax is:

AuthType Basic
AuthUserFile /www/.site_htpasswd
AuthName "Protected Area"

<RequireAny>
    Require ip 1.2.3.4
    Require valid-user
</RequireAny>
fbastien
  • 762
  • 1
  • 9
  • 20
2

Try changing first 2 lines to

Order deny,allow
Deny from all
Allow from 1.2.3.x

Replace your desired IP in the Allow from

JoseK
  • 31,141
  • 14
  • 104
  • 131