Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 理解htaccess文件匹配代码_Apache_.htaccess_Drupal_Http Status Code 403_Subdirectory - Fatal编程技术网

Apache 理解htaccess文件匹配代码

Apache 理解htaccess文件匹配代码,apache,.htaccess,drupal,http-status-code-403,subdirectory,Apache,.htaccess,Drupal,Http Status Code 403,Subdirectory,我正在尝试将drupal安装到bluehost托管网站的子目录中 这是一个巨大的痛苦 我认为.htaccess中的以下几行是问题所在。当我当前导航到mysite.com/subdir/install.php时,我得到一个403错误。然而,当我从下面几行中去掉“deny”时,我就不再得到那个错误了,所以我怀疑这一行造成了所有的麻烦 我的问题是,有人能帮我理解下面代码中发生了什么吗?特别是如果你能把它按组件分解 <FilesMatch "\.(engine|inc|info|install|m

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

这是一个巨大的痛苦

我认为.htaccess中的以下几行是问题所在。当我当前导航到mysite.com/subdir/install.php时,我得到一个403错误。然而,当我从下面几行中去掉“deny”时,我就不再得到那个错误了,所以我怀疑这一行造成了所有的麻烦

我的问题是,有人能帮我理解下面代码中发生了什么吗?特别是如果你能把它按组件分解

<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>

命令允许,拒绝

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

在上面的
FilesMatch
中,您有4组正则表达式,其中1组有一个辅助可选集

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

例如:

\.(engine|inc ...)$|
表示文件以.engine或.inc结尾,或。。。规则的其余部分,拒绝访问它

然后在第一组规则的末尾有一个
|
,与上面的示例类似,代表
,因此如果第一组规则不匹配,它将启动第二组规则,这略有不同

^(\..*|Entries.*|Repository)$
在这里,它的作用正好相反,如果文件以给定的关键字开始和结束,它就会匹配,例如:

\.(engine|inc ...)$|
如果文件以
开头,后跟任何内容(
*
)表示任何其他内容,例如
.htaccess
或以
条目开头,后跟任何内容,或完全是存储库或。。。直到最后

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

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

如果你想知道更多,我建议你了解更多