Как запретить доступ по IP ко всем php файлам, кроме index.php?
Сейчас в .htaccess есть такой код, который разрешает открывать только index.php.
<Files *.php>
deny from all
</Files>
<Files index.php>
allow from all
</Files>
Но как сделать, чтобы index.php могли смотреть все, а остальные файлы только по определенному IP адресу?
Ответы (1 шт):
Для того, чтобы разрешать или запрещать доступ, анализируя IP-адрес клиента, можно указывать адрес или подсеть в директиве from. Кроме того необходимо указать, что по умолчанию выполняется запрет или разрешение для остальных адресов:
<Files *.php>
Order Deny,Allow
Deny from all
Allow from 10.39.9.85
</Files>
<Files index.php>
Allow from all
</Files>
Возможно, вам потребуется получить возможность указания директив доступа в файлах .htaccess для определённой директории, используемой apache для определённого сайта, иначе указанные директивы могут быть проигнорированы.
Для этого найдите в конфигурационном файле apache (/etc/apache2/apache2.conf, /etc/httpd/httpd.conf) и укажите какие свойства вы хотели бы переопределять в .htaccess (для простоты можно указать, что разрешается изменять любые свойства - AllowOverride All):
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Подробности по Allow / Deny в .htaccess: https://htaccessbook.com/block-ip-address/
Подробности по AllowOverride в конфигурации директории: https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride