阻止特定文件

时间:2013-08-11 18:07:51

标签: .htaccess mod-rewrite

我想使用mod_rewrite来阻止对文件的访问。

我们以index.html为例。

我知道您可以使用FileMatch,但我想使用mod_rewrite来执行此操作。

我尝试过这样的事情:

RewriteEngine On

RewriteCond %(REQUEST_URI} !^/index\.html$
RewriteRule (.*) - [L]

但这不起作用,如何存档?

2 个答案:

答案 0 :(得分:0)

您可以使用F标志拒绝访问给定文件:

RewriteEngine On

RewriteRule ^index.html$ - [F]

拒绝访问以.pdf结尾的任何文件:

RewriteRule \.pdf$ - [F]

答案 1 :(得分:0)

如果您的文件曾经存在,则有几个选项。而不是向浏览器,搜索引擎或用户说“拒绝访问”。如果您删除了该文件但没有其他文件可以使用该文件,则可以使用410 Gone标志以G错误进行响应。

RewriteRule ^yourfile.html$ - [G,L]

如果它在某个目录中,那么你也必须包含该目录,但由于我们使用.htaccess,我们不需要前面的斜杠。

RewriteRule ^some-directory/yourfile.html$ - [G,L]

如果您移动了该文件,那么您可以使用301 Redirect响应来让用户,搜索引擎以及其他所有人知道该文件具有新的永久位置

RewriteRule ^old-directory/yourfile.html$ new-directory/yourfile.html [R=301,L]

如果您想告诉别人该文件仍然存在但由于它现在具有特权而无法访问该文件,那么您可以使用403 forbidden来回复该文件的请求。

RewriteRule ^some-directory/yourfile.html$ - [F,L]

您可以了解more about the various rewrite flags on this page