我的主要问题是,出于安全原因,我想知道是否可以使用 .htaccess 虚拟更改网站文件的名称(在某种意义上)。例如,如果我有一个文件/index.php
,并且我希望将调用/mysite
重定向到/index.php
,但我还希望调用/index.php
返回为错误 403 或 404。这可能吗?如果是这样,怎么办?
此外,我一直在寻找有关 .htaccess 指令语法的完整文档,但我找不到任何东西。我的第二个问题是,有人知道所有指令及其语法的通用参考吗?(我什至在 w3schools 都找不到)
问问题
3940 次
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 回答