用.htaccess隐藏目录和文件结构的存在

时间:2019-06-22 18:21:05

标签: php apache .htaccess

我想隐藏我的网站结构,并使用.htaccess将所有可能的请求重定向到一个文件(index.php)。

现在,我使用.htaccess拒绝读取图像和目录以及将请求重定向到index.php的权限。如果有人请求禁止的目录/文件,则显示E403。在这种情况下,我想将请求重定向到index.php,而不是E403。

所以基本上:我想开始在单个文件(index.php)中处理每个可能的请求(现有/不存在的页面,.php文件,图像,其他文件,dir ...,除了CSS和js)。 ,无论如何,因此用户每次都会看到我的index.php内容(由服务器端的许多文件生成,具体取决于URI)。我的.htaccess可以隐藏图像内容,但不能隐藏结构和PHP文件。如果有人请求无效的URI,它就可以工作(index.php显示错误消息),但是如果有人请求一个现有的PHP,它将执行它。

Order allow,deny
Deny from all
</Files>

<FilesMatch "\.(log|jpg|png|jpeg|gif|ico|jfif|pdf|phtml)$">
Order allow,deny
Deny from all
</FilesMatch>

Options -Indexes

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(css|js)$ index.php [L]

AddType application/x-httpd-php .php .phtml

1 个答案:

答案 0 :(得分:1)

您可以以phphtml格式定义特定的错误页面。您可以将访问者重定向到特定页面

    ErrorDocument 404 /errors/404.php
    ErrorDocument 403 /errors/403.php

例如,在404.php中,您可以使用以下代码:

header("Location: http://example.com/index.php");

或者如果您想使用index.html,可以这样做:

<html>
    <head>
<meta http-equiv="refresh" content="0; url=http://example.com/" />
    </head>
</html>

或者也可以执行以下操作:

    ErrorDocument 404 /index.php
    ErrorDocument 403 /index.php

link也很有帮助

,对于您的新评论,答案是“是”。您可以将扩展程序作为另一个扩展程序处理,请看以下代码:

AddType application/x-httpd-php .mp3
RewriteEngine On
RewriteRule /load.mp3 /load.php

此代码将添加mime类型,并将.mp3文件作为.php处理 您也可以使用以下代码:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^(.+).mp3$ /$1.php [NC,L]

这个link也很有用