2

我的主要问题是,出于安全原因,我想知道是否可以使用 .htaccess 虚拟更改网站文件的名称(在某种意义上)。例如,如果我有一个文件/index.php,并且我希望将调用/mysite重定向到/index.php,但我希望调用/index.php返回为错误 403 或 404。这可能吗?如果是这样,怎么办?

此外,我一直在寻找有关 .htaccess 指令语法的完整文档,但我找不到任何东西。我的第二个问题是,有人知道所有指令及其语法的通用参考吗?(我什至在 w3schools 都找不到)

4

1 回答 1

2

首先,我首先要说 w3schools 没有特别好的参考资料。Apache mod_rewrite 文档非常好,我总是先去那里。

您的请求的第一部分作为重写非常简单。但在我们到达那里之前,让我们首先防止直接请求index.php. 为了做到这一点而不弄乱我们的其他规则,我们将使用该%{THE_REQUEST}变量来匹配index.php和禁止访问。

RewriteEngine On

# If the request sent by the browser includes index.php...
RewriteCond %{THE_REQUEST} index\.php
# forbid access (403)
RewriteRule ^. - [F]

# Then you just need a generic rule to rewrite /mysite into index.php
RewriteRule ^mysite index.php [L]

我们需要使用第一部分THE_REQUEST来避免与第二部分重写为 index.php 造成冲突。

如果您想提供 404 以使其看起来index.php甚至不存在,请将其替换[F][R=404,L]

于 2013-01-25T15:44:24.080 回答