AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 567402
Accepted
nafmo
nafmo
Asked: 2014-01-16 03:44:25 +0800 CST2014-01-16 03:44:25 +0800 CST 2014-01-16 03:44:25 +0800 CST

Apache2:使用符号链接的目标名称进行内容类型映射

  • 772

我正在开发一个 Web 应用程序,该应用程序需要在静态 URL 上提供许多不断更新的文档,但是文档的 Content-Type 不同(它是 JPEG 或 SVG)。如果文档是符号链接,则链接末尾的文件具有 MIME 类型映射的正确文件扩展名,但我无法确定是否可以在查找扩展名之前让 Apache 跟随链接在 MIME 表中。

这个问题问同样的问题,但提供的解决方法对我不起作用,因为如果我提供图像/jpeg(它们会自动检测 GIF 和 PNG),浏览器不会自动检测 SVG,所以我需要一个正确的 MIME 类型。

通常,我会为此使用 .meta 文件和mod_cern_meta,但我的目标 Linux 发行版(Fedora 19/20,RHEL 7)不附带这个,我想避免自己提供它。我认为我不能使用 mod_headers,因为它需要我重写整个 .htaccess 文件(这些文件是单独更改的),也不能使用 mod_asis,因为数据文件本身是使用第三方工具生成的。

编辑:我正在通过将我的文件编写为类型映射(只有一个条目)、指向实际资源并列出其 Content-Type 来解决这个问题。这意味着必须编写额外的文件,但使用 mod_meta 也是如此。暂时工作得很好。

apache-2.2
  • 2 2 个回答
  • 604 Views

2 个回答

  • Voted
  1. Best Answer
    user237419
    2014-01-16T05:24:20+08:002014-01-16T05:24:20+08:00

    你试过mod_mime_magic吗?启用此模块后,apache 可以像“file”命令一样猜测内容类型,并将正确设置内容类型标头。

    检查 centos httpd 安装的默认配置,mod_mime_magic 似乎默认启用,并且当(例如)请求以符号链接(即“aaaa”)为目标时,内容类型设置正确,比方说,.png 文件.

    此外,确保您为包含符号链接的根目录启用了以下符号链接选项(或仅为整个文档根启用它)

    lrwxrwxrwx  1 root   root       10 Jan 15 16:27 aaa -> pgid35.png
    -rw-r--r--  1 root   root   229727 Jan 15 16:26 pgid35.png
    
    
    HEAD http://localhost/tt/aaa
    200 OK
    Connection: close
    Date: Wed, 15 Jan 2014 13:27:30 GMT
    [...]
    Content-Length: 229727
    Content-Type: image/png                      <<<--- [[bullseye]]
    Last-Modified: Wed, 15 Jan 2014 13:26:47 GMT
    [...]
    

    为简洁起见,我将包含一些 apache httpd 的配置提示,以使 mime 发挥作用:

    #assuming the module folder is linked within apache root config dir as 'modules'
    LoadModule mime_magic_module modules/mod_mime_magic.so
    #define the magic file containing patterns for identifying file types
    MIMEMagicFile conf/magic
    #the system magic file normally contains more patterns than 
    #the default http magic file
    #centos magic file install path:
    #MIMEMagicFile /usr/share/misc/magic
    #do follow the symlinks if you are using them
    <Directory />
    Options FollowSymlinks
    </Directory>
    
    • 0
  2. HBruijn
    2014-01-16T05:30:57+08:002014-01-16T05:30:57+08:00

    如何让您的静态 URL 不直接指向文档,而是指向设置正确 Content-Type 标头然后流式传输文档的简单脚本?

    <?php
        $filename = "path/to/your/file";
    
        $finfo = finfo_open(FILEINFO_MIME_TYPE); 
        $mimetype = finfo_file($finfo, $filename); 
        finfo_close($finfo);
    
        header("Content-Type: ".$mimetype );
        echo readfile($filename);
    ?>
    
    • 0

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve