【问题标题】:change file-name with .htaccess使用 .htaccess 更改文件名
【发布时间】:2013-01-25 23:45:28
【问题描述】:
我的主要问题是,出于安全原因,我想知道是否可以使用 .htaccess 虚拟更改网站文件的名称(在某种意义上)。例如,如果我有一个文件 /index.php,并且我希望将 /mysite 的调用重定向到 /index.php,但我也希望对 /index.php 的调用返回为错误 403 或 404。这可能吗?如果是这样,怎么做?
另外,我一直在寻找有关 .htaccess 指令语法的完整文档,但我找不到任何东西。 我的第二个问题是,有人知道所有指令及其语法的通用参考吗? (我什至在 w3schools 都找不到)
【问题讨论】:
标签:
apache
.htaccess
mod-rewrite
【解决方案1】:
首先我要说 w3schools 没有什么特别好的参考资料。 Apache mod_rewrite documentation真的很好,我总是先去。
您请求的第一部分作为重写非常简单。但在我们到达那里之前,让我们先阻止对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]