【问题标题】:FilesMatch or Files for Single File HTACCESSFilesMatch 或单个文件 HTACCESS 的文件
【发布时间】:2015-01-31 05:54:05
【问题描述】:

我的网站有包含 index.html 文件的子目录。

www.domain.com/.htaccess 
www.domain.com/index.html
www.domain.com/otherstuff/index.html

我在 .htaccess 文件中有以下内容可以在我的主索引页面上运行一些 php 代码,但我知道它也会影响我的子目录中的 index.html 文件。如何编写它以使其仅适用于 www.domain.com/index.html?

<Files index.html>
AddHandler x-httpd-php5-cgi .html
</Files>

我发现了这个: Precise targeting of the Filesmatch directive

但我对使用重定向等替代方法不感兴趣,因为它不能回答问题。我想知道是否可以这种方式做到这一点,如果可以,怎么做?如果实际上不可能,那么我会知道以供将来参考,并且将始终使用替代方法。

谢谢!

【问题讨论】:

  • 正如您在所引用的帖子中发现的那样,您无法将子目录添加到 &lt;files&gt; 指令。它不支持路径。因此,您要么需要使用 alternative,要么不使用它。您为什么反对使用 web 服务器 支持的其他方式? Apache 故意为您提供替代方案,因为每个指令可能并不适合所有情况。您需要使用有效的方法。您可以尝试 Location 指令,但这仅在 apache 配置中。
  • 谢谢!我不反对使用替代品。通常,当我问如何在这里做某事时,而不是得到该问题的答案,我会被问到为什么我不以另一种方式做,而是因为它是“首选”。我想明确表示我想知道它是否可以以这种方式完成,而不仅仅是在没有回答该问题的情况下被告知去做其他事情。

标签: apache .htaccess


【解决方案1】:

请参阅RemoveHandler 文档:

RemoveHandler 指令删除具有给定扩展名的文件的所有处理程序关联。这允许子目录中的 .htaccess 文件撤消从父目录或服务器配置文件继承的任何关联。

所以在“otherstuff”目录中,添加另一个 htaccess 文件:

<Files index.html>
RemoveHandler  .html
</Files>

【讨论】:

  • 这就是我一直在寻找的答案,非常感谢!根据我在 apache 网站上的理解,似乎如果我想使用现有的指令,我必须在我想要排除的子目录中创建另一个 htaccess 来否定它,但我无法找到任何明确的确认,只回答说使用重定向,不使用 .html 扩展名等。感谢您为我验证!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多