То, чего я пытаюсь добиться, - это использовать 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
Это две переменные, для которых мне нужно найти правильное выражение сравнения.Это выражение вернет true, если первая часть IP идентична.
Другим способом было бы указать допустимый диапазон, но я не "знаю", что такое требуемый диапазон.Я знаю, что это первая часть переменной SERVER_ADDR
, но я не знаю, как сказать серверу, что я имею в виду: D
Надеюсь, я не слишком запутался.В конечном итоге я ищу способ определить, поступает ли запрос с того же сервера, что и сайт, на котором он находится.И это должно быть достигнуто через файл .htaccess.Зачем?Поскольку защищенная папка также содержит файлы, отличные от сценариев php, альтернативным вариантом будет динамическое обслуживание всех этих файлов и использование PHP для всех условий.Использование простой команды htaccess было бы намного элегантнее.Я просто надеюсь, что есть способ сделать это.