如何使用htaccess文件保护php文件?

如何使用htaccess文件保护php文件?,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我制作了一个rest PHP服务器,所以大多数路径都是这样的 /test/home.php/product 我的目的是保护api并防止直接访问PHP文件。 经过一些研究,我发现有人在问如何隐藏PHP扩展 这就是他的解决方案: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [L,QSA] 因此,新的路

我制作了一个rest PHP服务器,所以大多数路径都是这样的

/test/home.php/product
我的目的是保护api并防止直接访问PHP文件。 经过一些研究,我发现有人在问如何隐藏PHP扩展 这就是他的解决方案:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
因此,新的路由是/test/product,它给出与/test/home.php/product相同的响应 但这似乎没用,因为旧的url仍然有效

如果PHP扩展出现在url中,我不能阻止访问吗

附言:我的问题与你的不同


因为我要求保护包含php扩展的路由,而不是以php结尾,所以您应该在API文件的顶部执行以下操作:

if(!defined('INSYSTEM')) {
    exit;
}
然后制作一个允许访问的代理脚本:

define('INSYSTEM', 1);
if($_REQUEST['page'] == 'home') {
    require 'home.php';
    exit;
}

From:

您应该将文件放在文档根目录之外,并使用路由器。可能重复的@neil no这与我做的更改不同,但我想限制对旧url/test/home.php/product的访问,但要使其在/test/productAh中工作,上面的示例仅在url以.php结尾时返回禁止。尝试可能的副本在这种情况下,让它们位于文档根目录之外,并且只在文档根目录中具有更像路由器的代理脚本,不是更容易吗?可能有一个服务器主机,它只允许访问公用文件夹以上载到其他主机。大多数主机允许您将文件至少升级一级。如果他们不这样做,那么你应该改变主机,在我看来。在这种情况下,代理也将是一个php文件。如果我必须调用/proxy.php/product,它仍然是一样的。api文件中的代码将不会执行;您可以在它们中添加一个标题以重定向到索引页,然后退出。我想限制对旧url的访问,但对新url不允许。我编辑了一个示例的链接,该示例禁止访问其中包含.php的url。确定。关键行现在显示在上面。我将其添加到了我的.htaccess中,它没有改变任何东西,仍然是相同的问题更改您的答案以支持包含php扩展的url,而不仅仅是以php结尾的url
RewriteCond %{THE_REQUEST} /.+?\.php[\s?] [NC]
RewriteRule ^ - [F]