1

Comments

我发觉研究的东西多了,就会看到各种神奇的 Bug……

今天写的这个 Bug 是关于 Apache 的 Rewrite 模块的。先来看一个很正常的 Rewrite 规则:

1
2
RewriteCond %{REQUEST_URI} \.u$
RewriteRule ^(.*)\.u$ $1

这个什么意思呢?用过的人一定看得出来,就是把一个 .t 结尾的请求发送到一个去掉 .t 的文件上面。比如我如果请求 upsuper.u 就会自动调用 upsuper 这个文件来返回。这没有什么疑问。

然后,我们发现,.u 文件浏览器不知道是什么,而 upsuper 这个文件在服务器上又是没有类型的,于是 Apache 不知道告诉浏览器(或者错误地告诉了一个)MIME-Type。这样即使这个文件是个网页,浏览器上也会出现下载提示或者当作纯文本直接输出。

翻阅了一下 Rewrite 模块的资料,我们了解到可以使用 T 这个标志符来强制指定 MIME-Type 类型,于是规则变成了下面这样:

1
2
RewriteCond %{REQUEST_URI} \.u$
RewriteRule ^(.*)\.u$ $1 [T=text/html]

可是无效!

Bug 开始出现了~
Read the rest of this entry »

< ,, >