我的目标是仅有的允许IP 1.2.3.4运行/dir1/hello-php.php脚本。
“开箱即用”的 AWS EC2 linux 2 apache 2.4.39(仅包含以下更改)、PHP 5.7.26,并在 Windows 10 上使用 Firefox 70.0 64 位。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 脚本?
答案1
您可以禁止访问整个目录并仅允许指定的 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 也不是脚本