.htaccess allow localhost problem

49,700

Solution 1

Use the order the other way around, ie:

order deny,allow
deny from all
allow from 127.0.0.1

Solution 2

Require local

The local provider allows access to the server if any of the following conditions is true:

  • the client address matches 127.0.0.0/8
  • the client address is ::1
  • both the client and the server address of the connection are the same

This allows a convenient way to match connections that originate from the local host:

Require local

Solution 3

Leo's answer solved my issue. This is what I have set up so I can block direct access to images:

<IfModule mod_rewrite.c>
<Files ~ "\.(jpg|jpeg|png|gif|pdf|txt|bmp|mp4|mov|ogg|wmv|webm|flv|mpg|mp2|mpeg|mpe|mpv|m4p|m4v|mp3|wav|acc|oga|m4a)$">
   order deny,allow
   deny from all
   Require local
   allow from all
</Files>
</IfModule>

I didn't want to type out the ip, incase the local ip changed later

Share:
49,700
Anthony
Author by

Anthony

Updated on July 09, 2022

Comments

  • Anthony
    Anthony almost 2 years

    Here is the situation...

    I have a cron job scheduled to run that is used to backup my database. Because of the way php is installed, I'm having to use lynx to hit the php script that is performing the backup.

    Because this script has to live within my public_html folder I want to deny all requests except for the ones that come directly from my server (i.e.: localhost). Also, I'm assuming that the ip I'll be coming from is 127.0.0.1. I'm not exactly sure if that's true but I can't think of what else my ip would be in this situation. Am I right about the cron job running and hitting the script from 127.0.0.1?

    Here is what my .htaccess looks like:

    order allow,deny
    deny from all
    allow from 127.0.0.1
    

    As a result, I keep getting a 403 Forbidden. Which is what I want to do for everyone else except for myself. Maybe I'm going about this the wrong way... Does anyone see what I'm doing wrong?