我开发了一个基于Yii2的Web项目,因此除了子目录" web"之外,禁止访问所有文件和目录。
下面是项目目录struct:
.htaccess composer.json config/ console.php web.php commands/ controllers/ models/ runtime/ vendor/ views/ web/ .htaccess assets/ index.php
我已经通过.htaccess在apache下实现了这一点,它非常容易^ _ ^
的.htaccess
Order Allow,Deny
Deny from all
网/ htaccess的
Order Allow,Deny
Allow from All
但我现在需要在IIS8下部署这个项目,所以我尝试使用IIS管理将.htaccess转换为web.config,但转换结果为空。 我怎样才能做到这一点?感谢
答案 0 :(得分:0)
IIS使用“请求筛选”模块来限制浏览器对作为应用程序组件的文件的访问。对于Web.config文件中的示例应用程序,该部分可能如下所示:
<security>
<requestFiltering>
<denyUrlSequences>
<add sequence="engine" />
<add sequence="inc" />
<add sequence="info" />
<add sequence="install" />
<add sequence="module" />
<add sequence="profile" />
<add sequence="po" />
<add sequence="sh" />
<add sequence="theme" />
<add sequence="tpl(\.php" />
<add sequence="Root" />
<add sequence="Tag" />
<add sequence="Template" />
<add sequence="Repository" />
<add sequence="code-style" />
</denyUrlSequences>
<fileExtensions>
<add fileExtension=".sql" allowed="false" />
<add fileExtension=".pl" allowed="false" />
</fileExtensions>
</requestFiltering>
</security>
请注意,您可以将此部分注释掉以进行安装,因为此过滤器会阻止安装脚本。
使用请求过滤的另一种方法是使用URL重写器模块为任何匹配的文件类型返回403错误。 URL重写器模块的优点是它使用正则表达式进行匹配。
<rule name="Protect files and directories from prying eyes" stopProcessing="true">
<match url="\.(engine|inc|info|install|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$" />
<action type="CustomResponse" statusCode="403" subStatusCode="0"
statusReason="Forbidden"
statusDescription="Access is forbidden." />
</rule>