我知道,如果您将文件svn:mime-type
的 Subversion 属性设置为,那么当通过 Apache httpd 中的 Subversion 模块在浏览器中查看文件时,它将带有一个标头,使浏览器能够将其呈现为 HTML 而不是纯文本。.html
text/html
Content-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 类型.html
为text/html
默认配置。使用 Apache 2.4.10 和 Subversion 1.8.11 进行测试。