怎么让Google SVN托管服务正确处理HTML文档Content-Type?
问题
前天写了一个关于SeaJS原理的demo,想把它放到线上做展示用。于是,想到了Google code的SVN托管服务,因为它支持HTTP访问。但是,文件上传到Google SVN之后,通过浏览器访问demo的HTML页面,却发现显示的是页面的源码。
分析
搜索一番,发现问题的根源在于,SVN服务器端发送的HTML文件HTTP响应headers的Content-Type属性值为text/plain,而浏览器会把所有Content-Type为text/plain的文件按照纯文本文件来解析并显示。所以,我们需要告诉SVN 服务器:这是一个HTML文档,发送给浏览器的时候需要告诉浏览器应该按照解析HTML的方法来解析这个文件。问题的根源找到了,怎么解决呢?
解决方案
感谢google。用之再次搜索一番,发现,我们需要告诉SVN服务器端,对于存放在服务器上的文件应该使用什么样的mime-type。windows操作系统下,我们可以这样操作。首先,使用TortoiseSVN checkout项目源码到本地,然后,再给本地文件的SVN属性添加mime-type信息,最后再把改动提交到SVN服务器。
具体操作的截图如下,操作系统为Win7:
step1:

step2:

step3:

step4:

我们还可以通过修改SVN客户端配置来自动设置每个文件的mime-type属性,相对前一种方法,可以节省太多精力了。
首先,我们要打开SVN客户端配置文件。在 TortoiseSVN 配置对话框的“General”设置页中有一个编辑按钮可以直接打开这个文件(其实,win7下的文件路径是 C:\Users\Administrator\AppData\Roaming\Subversion\config)。如图:

你需要修改两处: 首先在 miscellany 打头的这一节中取消注释这一行:
1 [miscellany]
2 enable-auto-props = yes
其次,你需要编辑后面的一节,定义你想为哪些文件添加哪些属性。
1 ##################################################
2 ### Binary files
3 ##################################################
4 *.bmp = svn:mime-type=image/bmp
5 *.gif = svn:mime-type=image/gif
6 *.ico = svn:mime-type=image/x-icon
7 *.jpg = svn:mime-type=image/jpeg
8 *.pdf = svn:mime-type=application/pdf
9 *.png = svn:mime-type=image/png
10
11 ##################################################
12 ### Text files, eol-style is native
13 ##################################################
14 *.css = svn:mime-type=text/css
15 *.js = svn:mime-type=application/x-javascript
16 *.htm = svn:mime-type=text/html
17 *.html = svn:mime-type=text/html
18 *.txt = svn:mime-type=text/plain
这样,文件在提交的时候会自动添加相应的mime-type属性。
参考资源
posted on 2012-07-25 09:00 王鸿源honingwon 阅读(633) 评论(1) 收藏 举报
浙公网安备 33010602011771号