Назад | Перейти на главную страницу

Ограничьте доступ браузера к одному IP-адресу в httpd.conf для скриптов PHP

Моя цель для только IP 1.2.3.4 позволяет запускать скрипт /dir1/hello-php.php.

"Из коробки" AWS EC2 linux 2 apache 2.4.39 (только с изменениями ниже), PHP 5.7.26 и использование 64-разрядной версии Firefox 70.0 в Windows 10. php.conf также имеет настройки по умолчанию.

Скрипты .. /dir1/hello-php.php и /dir1/hello-html.html

Apache httpd.conf и php.conf имеют настройки по умолчанию, включая ..

<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted

<Files ".ht*">
Require all denied

Теперь я изменил httpd.conf на ..

<Directory "/var/www/html/dir1">
AllowOverride None
<Files "*.php">
    Require ip 1.2.3.4
</Files>

Из Firefox ..

https://www.website.com/dir1/hello-php.php дает «Запрещено: у вас нет разрешения на доступ к /dir1/hello-php.php на этом сервере». Тем не мение .. https://www.website.com/dir1/hello-html.html работает.

Затем, если я изменю директиву на ..

<Directory "/var/www/html/dir1">
AllowOverride None
<Files "*.html">
    Require ip 1.2.3.4
</Files>

Затем ..

https://www.website.com/dir1/hello-php.php работает. Тем не мение .. https://www.website.com/dir1/hello-html.html дает "Запрещено: у вас нет разрешения на доступ к /dir1/hello-html.html на этом сервере".

Эти результаты оглядываются назад и не достигают моей цели.

Что мне не хватает в httpd.conf или php.conf, чтобы только IP 1.2.3.4 разрешить успешно запустить скрипт /dir1/hello-php.php?

Вы можете запретить доступ ко всему каталогу и разрешить его только указанному IP:

<Directory "/var/www/html/dir1">
  AllowOverride None
  Require ip 1.2.3.4

Или в вашем примере вы могли бы сделать это

<Directory "/var/www/html/dir1">
 AllowOverride None
<Files  ~ "\.(html|php)$">
 Require ip 1.2.3.4
</Files>

Также html - это не скрипт