Команда htaccess, чтобы разрешать запросы только с того же сервера (без указания IP-адреса).

Я пытаюсь использовать htaccess, чтобы разрешать запросы, поступающие только с одного и того же сервера, но делать это с использованием доступных переменных и без указания IP. Цель состоит в том, чтобы иметь возможность запускать задания cron и запросы ajax к файлам в соответствующей папке, но возвращать страницу 404 при попытке прямого доступа.

Вот что у меня есть:

Options -MultiViews +FollowSymLinks  
RewriteEngine On    
RewriteCond %{REMOTE_ADDR} !%{SERVER_ADDR}[NC]  
RewriteRule ^(.*)$ /error404.html [L,R=404]  

Это отлично работает с ajax. Это также работает для cronjobs, если сервер использует тот же исходящий IP-адрес, но если исходящий IP-адрес сервера отличается от IP-адреса сайта, очевидно, что он завершится ошибкой и вернет 404, потому что % {REMOTE_ADDR} является отличается от % {SERVER_ADDR} . Одним из решений было бы увидеть исходящий IP-адрес для этого сервера и добавить его в качестве другого исключения. Однако я ищу более многоразовое решение. Я попытался использовать регулярное выражение для сопоставления только первой части IP-адреса, но мне не повезло с этим. Не знаю, как это сделать. В основном с регулярным выражением я пытаюсь достичь следующего: предположим:

%{REMOTE_ADDR} = 192.322.122.50  
%{SERVER_ADDR} = 192.322.122.1  

Это две переменные, для которых мне нужно найти допустимое выражение сравнения. Это выражение вернет истину, если первая часть IP-адресов идентична.

Другой способ - указать допустимый диапазон, но я не «знаю», какой диапазон нужен. Я знаю, что это первая часть переменной SERVER_ADDR , но я не знаю, как сказать серверу, что я имею в виду: D

Надеюсь, я не слишком запутался. В конечном итоге я ищу способ определить, поступает ли запрос с того же сервера, что и сайт, на котором он находится. И это должно быть достигнуто с помощью.htaccess файл. Почему? Поскольку защищенная папка также содержит файлы, отличные от сценариев php, альтернативой может быть обслуживание всех их динамически и использование PHP для всех условий. Было бы намного элегантнее использовать простую команду htaccess. Я просто надеюсь, что есть способ сделать это.

6
задан Owbey 23 November 2011 в 00:55
поделиться