Моя цель для только 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 - это не скрипт