Subversion Apache 模块是否可以在不使用 svn:mime-type 属性的情况下提供具有 html 内容类型的 html 文件?

Subversion Apache 模块是否可以在不使用 svn:mime-type 属性的情况下提供具有 html 内容类型的 html 文件?

我知道,如果您将文件svn:mime-type的 Subversion 属性设置为,那么当通过 Apache httpd 中的 Subversion 模块在浏览器中查看文件时,它将带有一个标头,使浏览器能够将其呈现为 HTML 而不是纯文本。.htmltext/htmlContent-Type: text/html

不过,我正在寻找一种方法来做到这一点没有使用该svn:mime-type属性。

我知道您可以将 svn 客户端配置为自动添加属性 - 这不是我想要的,因为我不想确保所有用户都拥有这些设置。我还知道我可以创建一个预提交钩子,如果未设置属性,则拒绝提交,以强制用户设置属性 - 我可能会回到那个,但我正在寻找一些不那么具有侵入性的方法。

我还知道我可以使用提交后挂钩在服务器端自动添加属性。我宁愿不这样做(因为用户必须在提交后立即更新,而且编写起来并不容易) - 我正在寻找更好的替代方案。也许是 Apache 服务器中的重写规则?

答案1

简短的回答 - 是的 - 将 ModMimeUsePathInfo 设置为开启以使 Apache 负责 MIME 类型。

较长的回答 - 是的,但您需要在 Apache 服务器中使用相对较新的 Subversion 版本。

通常,内容由询问 Subversion 存储库的 mod_dav_svn 模块提供,因此 mime 类型由 Subversion 模块指定。

过去,只能使用 svn:mime-type 属性进行配置。请参阅此主题在 Subversion 用户邮件列表中查看某人尝试执行类似操作的示例。

现在,使用 ModMimeUsePathInfo 指令将告诉 Apache 确定使用 mod_mime 指定什么 MIME 类型 - 请参阅附录 C,WebDAV 和自动版本控制请参阅 Subversion 一书以了解更多信息。

具体来说,例如:

<Location /repos>
    DAV svn
    SVNPath /var/svn/repository
    SVNAutoversioning on

    ModMimeUsePathInfo on
</Location>

答案2

阿帕奇的mod_mime如果未设置任何属性,将确定内容类型svn:mime-type。在 Apache 配置中启用它:

LoadModule mime_module modules/mod_mime.so

带扩展名的文件的 MIME 类型.htmltext/html默认配置。使用 Apache 2.4.10 和 Subversion 1.8.11 进行测试。

相关内容