6

我正在尝试在我的 bluehost 托管网站上的子目录中安装 drupal ...

这是一个巨大的痛苦

我认为 .htaccess 中的以下几行是问题所在。当我当前导航到 mysite.com/subdir/install.php 时,我收到 403 错误。但是,当我从下面的行中取出“拒绝”时,我不再收到该错误,所以我怀疑这行是造成所有麻烦的原因。

我的问题是,有人可以帮助我理解以下代码中发生了什么吗?特别是如果您可以按组件分解它。

<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)(|~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig\.save)$">
      Order allow,deny
    </FilesMatch>
4

1 回答 1

7

FilesMatch允许您使用正则表达式匹配文件。

在您的上方,FilesMatch您有 4 组正则表达式,其中 1 组具有辅助可选集。

基本上它所做的是禁止访问(错误 403)对您的正则表达式集描述的任何文件的访问。

例如:

\.(engine|inc ...)$|

表示如果文件以 .engine 或 .inc 或 ... 规则的其余部分结尾,则拒绝访问它。

然后在第一组规则的末尾你有一个|类似于上面的例子,代表OR所以如果第一组规则不匹配,它会启动第二个规则,这有点不同。

^(\..*|Entries.*|Repository)$

在这里它做相反的事情,如果文件以给定的关键字开始和结束,它匹配,例如:

如果文件以.任何内容开头,则 ( .*) 表示其他任何内容,例如.htaccess或以任何内容开头,Entries或者完全是存储库或 ... 直到最后。

然后是下一条规则^#.*#$,这意味着文件以 a 开头和结尾,#因为#它的字面意思是

最后一组规则与第一个验证文件是否以给定扩展名结尾的规则相同。

如果您想了解更多,我建议您了解有关Perl 兼容正则表达式 (PCRE)的更多信息

于 2013-09-07T18:25:41.000 回答