使用 .htaccess 隐藏文件

使用 .htaccess 隐藏文件

假设index.php我的公共目录中有一个文件。

使用DirectoryIndex index.php,我可以将该文件设置为我的网站中的默认索引。

但如果我不想让用户www.example.com/index.php通过只有通过 www.example.com, 我怎样才能做到这一点?

编辑

我添加了以下代码:

if (strpos($_SERVER['REQUEST_URI'], 'index.php')) {
    readfile('404.html');
    exit;
}

在 的开头index.php,这样输入 bywww.example.com/index.php会导致 404 错误,而输入 by 则www.example.com不会(因此,不会向潜在攻击者透露我是否使用 PHP 的信息)。这不是世界上最好的解决方案,但确实有效。

答案1

你的问题毫无意义。如果你想向请求的用户显示一个网页,www.example.com那么必须有一个目錄索引某种类型。

DirectoryIndex index.php index.html 

将导致 Apache 搜索文档根目录服务器的 index.php 然后是 index.html,并向用户呈现找到的第一个渲染版本。

答案2

您无法真正“隐藏”该页面。您可以使用 htaccess 拒绝访问(导致 403 错误)。您还可以使用 mod_rewrite 重定向,从 /index.php(如建议)重定向到 / 或从 /index.php 重定向到您的 404 文件(如您现在所做的)。最接近隐藏页面的方法是使用 mod_rewrite 从 index.php 转到 /,因此当用户输入 www.example.com 或 www.example.com/index.php 时,它会显示为 www.example.com

答案3

你可以使用类似以下方式“禁止”/index.php

<Location /index.php>
   Order deny,allow
   Deny from all
</Location>

或者使用 mod_rewrite (更加用户友好) 从 /index.php 重定向到 /。

答案4

我看到你对 Koos 的评论说你想隐藏 index.php,但实际上你做不到。最好的做法是将要隐藏的部分放在另一个文件中,然后将该文件包含在 index.php 中。如果操作正确,用户将看不到 include 语句和包含的文件,只能看到结果输出。

相关内容