【问题标题】:How to determine MIME Type set by htaccess in PHP如何确定 PHP 中 htaccess 设置的 MIME 类型
【发布时间】:2010-05-03 14:44:59
【问题描述】:

我设置了一个 .htaccess 文件来定义目录 root/a/b/ 中的特定 MIME 类型,并且所有文件都在同一个目录中。

我有一个 php 文件,它想要在 root/c/ 目录中提供这些文件,并且需要确定 .htaccess 文件定义的内容类型。

有没有办法做到这一点? PHP 版本是 5.1.6。 mime_content_type 返回text/plain,我宁愿不尝试手动解析 .htaccess 文件。如果需要,我可以移动文件。

【问题讨论】:

    标签: php .htaccess content-type


    【解决方案1】:

    如果您想使用 php 提供文件,为什么不也使用 php 定义 mime 类型(例如,作为扩展名为关联数组 => mime 类型对)?

    话虽如此,在不解析 .htaccess 文件的情况下实现此目的的一种可能方法是让 php 脚本对 root/a/b 中的文件进行请求,并检查响应标头中的 mime 类型。如果您使用HTTP wrapper 提供文件,例如。 fopen('http://example.com/a/b/file'),你会自动得到这个:你可以通过$http_response_headerstream_get_meta_data 访问响应头——mime 类型在Content-Type: 头中。如果您以另一种方式打开文件,您仍然可以先执行 HEAD 请求并检查响应 Content-Type(即使为每个提供的文件执行 2 个请求似乎有点过头了)。

    【讨论】:

      【解决方案2】:

      您的意思是您想通过 php 脚本提供一些静态文件,并以与 apache 服务器直接(静态)提供的相同内容类型返回它们?

      我认为如果不阅读 .htaccess 文件,您将无法直接做到这一点。即使这样也可能不是万无一失的,因为 .htaccess 文件只是覆盖了 Apache 配置的全局设置,甚至覆盖了某个父目录中的其他一些 .htaccess 文件。

      我能想象的唯一万无一失的方法是您自己的 php 脚本建立一个 http 连接以获取(静态)文件并获取内容类型-但这对于您的场景可能不实用(并且要小心无限循环!)。

      【讨论】:

      • 是的,这正是我想做的。 mime_content_type 是如何工作的?我认为它根本看不到任何与 apache 相关的东西......
      • mime_content_type a) 已弃用,并且 b) 仅使用来自静态 magic.mime 文件的信息,该文件不考虑您的 .htaccess 细节。见php.net/function.mime-content-type
      猜你喜欢
      • 2015-06-16
      • 2011-04-18
      • 2015-05-19
      • 1970-01-01
      • 2021-04-24
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      相关资源
      最近更新 更多