我花了一个晚上来解决这个问题,但我没找到如何解决/绕过它:-(
我在“mydomain.com/admin/”中有一个.htaccess 文件,其中包含以下内容:
<Files ~ "[^index]\.php$">
Order Allow,Deny
Deny from All
</Files>
此 .htaccess 的目标是保护所有包含的文件(例如 inc/config.php)不被直接调用。
我的问题是,我希望对 paypal 使用的通知 php 文件进行例外处理。换句话说,我有一个文件“mydomain.com/admin/paypal/notify.php”,我希望允许 paypal.com 执行它。
我尝试了十分之一的方法,比如在 .htaccess 中添加“文件”授权
<Files /admin/paypal/notify.php>
Order Deny,Allow
Deny from all
Allow from paypal.com
</Files>
但没有成功:-(
...就好像
<Files ~ "[^index]\.php$">
是唯一要遵循的规则。
答案1
<文件文件名>仅适用于文件名,不能使用路径。
这文件指令文档状态:
本节中给出的指令将应用于基本名称(文件名的最后一个组件)与指定文件名匹配的任何对象。
可能的解决方案:
在目录中管理员/贝宝,创建一个 .htaccess 文件:
<Files notify.php>
Order Deny,Allow
Deny from All
Allow from paypal.com
</Files>
编辑:反转拒绝和允许。
答案2
请记住,从 paypal.com 执行允许将要求访问您网站的 IP 地址的 FQDN 精确为 paypal.com,查看我的日志时,通知来自 notify.paypal.com(最后三个请求来自 66.211.170.66)我在前五天没有任何请求,因此,我无法确认它们是否都来自同一个 IP 块。