先说说题外话,对于大名鼎鼎的Movable Type,今天第二次尝试安装(第一次是大二吧),还是不知道问题在哪里,尝试了5.2.6和4.1.2两个版本,mt-check.cgi都说恭喜,可以继续,但是到了安装最后一步,就一直在初始化数据库,打开phpAdmin面板看到没有任何表新建,看了估计是空间对DBI::SQL做过了限制了。另外涉及到了一些技术实现的细节,现在不想公布在这里。主要的有插件实现和.htacess文件的实现。而对于后者今天再次鼓捣,则加入了安全口令和Hotlink保护。关键是Hotlink的正则,开始复制网上的一个代码,对非条件用的OR结果就悲剧了,我的网站显然是其中一个不是其中另一。最简单的任意匹配是RewriteCond %{HTTP_REFERER} !^http://(.+\.)?rexdf.org [NC] ,另一个版本是RewriteCond %{HTTP_REFERER} !^http://([^/]+\.)?rexdf.org [NC],我测试过都是可以的匹配空白的就是RewriteCond %{HTTP_REFERER} !^$ ,另外关键点就是如果想要显示出另外一张图片,这里就有技巧了,不能使用本空间的,要么使用一条RewriteCond 来排除对这个文件本身的重写,要么使用另一个网址,否则会造成循环请求。下面给出两个可以用的
首先是使用外服务器的
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(.+.)?rexdf.org [NC] RewriteCond %{HTTP_REFERER} !^http://(.+.)?rexdf.net [NC] RewriteRule .*.(jpe?g|gif|bmp|png|mp3|mpg|mp4|mov|wav|wmv|css|js)$ http://rexdf.u.qiniudn.com/hotlink.png [NC,R,L]
以及另一条使用本服务器的图片
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{REQUEST_URI} !^/hotlink.jpg [NC] RewriteCond %{HTTP_REFERER} !^http://(.+.)?rexdf.org [NC] RewriteCond %{HTTP_REFERER} !^http://(.+.)?rexdf.net [NC] RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://rexdf.org/hotlink.jpg [L]
未完待续