0

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

index.html举个例子吧。

我知道你可以使用FileMatch,但我想用它mod_rewrite来做到这一点。

我试着做这样的事情:

RewriteEngine On

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

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

4

2 回答 2

0

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

RewriteEngine On

RewriteRule ^index.html$ - [F]

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

RewriteRule \.pdf$ - [F]
于 2013-08-11T18:11:33.453 回答
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]

您可以在此页面上了解有关各种重写标志的更多信息

于 2013-08-11T18:39:43.090 回答