Archive for the ‘东东博客’ Category

PHP空间上htaccess文件的功能太强大

星期一, 19 7 月, 2010

由于我买的这个空间每个月给的流量只有2000MB,空间只有300MB,因此不得不在收费空间和免费空间来回挪腾来解决流量不够的问题。

申请的免费空间大多是只有二级域名,虽然只提供二级域名的免费空间也可以绑定顶级域名,但在使用过程中也会出现免费空间经常维护(比如X10Hosting.com)或流量不够(比如HelioHost.org)或不支持绑定顶级域名(比如FreeCCHost.com)的问题。

现在借用.htaccess文件可以更方便的解决了在免费空间上存放多媒体内容的问题:
1. 用域名的DNS管理工具把media.lordong.net的二级域名指向自己的收费空间,即跟lordong.net是同一IP。
2. 在.htaccess添加下面两行:
RewriteCond %{HTTP_HOST} ^media.lordong.net$
RewriteRule ^(.*)$ http://lordong.you5.net/media/$1 [R=301,L]
其中第二行红色部分“lordong.you5.net/media/”是任意免费空间的域名和存放多媒体内容的子目录,可根据需要随时修改。
3. 把多媒体内容上传到免费空间的子目录,比如我这里是lordong.you5.net免费空间下的media子目录。

由于我在借用免费空间解决空间流量不够用的问题一文里提到已经把所有文章中多媒体内容比如图片、下载包、音乐等的链接都改成了http://media.lordong.nte/xxx这样的格式,因此通过上面的配置后打开博客上文章时,如果有一张图链接是/media/1.gif,那么通过.htaccess跳转后最终的链接变成http://lordong.you5.net/media/1.gif,只要免费空间上子目录下有对应的图片即可正常显示。

通过修改.htaccess文件解决重定向的问题

星期四, 15 7 月, 2010

本站原博客目录被GFW认证后打开原来的搜索结果墙内都会出现连接被重置,而墙外(含翻墙者)访问则出现404错误,解决方法是对原来的访问链接进行重定向。

使用空间自带的cPanel可以实现重定向的设置,不过存在一些小问题,我们可以在其结果的基础上做一些小改动。

比如我要把http://www.lordong.net/blog/*重定向到/wp/*,cPanel的结果是:
RewriteCond %{HTTP_HOST} ^lordong.net$ [OR]
RewriteCond %{HTTP_HOST} ^www.lordong.net$
RewriteRule ^blog\/\/?(.*)$ “http\:\/\/lordong\.net\/wp\/$1” [R=301,L]

这时所有的搜索结果通过墙外访问时都会由blog重定向到wp目录,也就是可以继续访问了。问题是如果直接输入http://www.lordong.net/blog(不以“/”结尾的情况)会显示出错,而在cPanel里又不能直接再添加这一项。

因此我们改为手动修改.htaccess文件(cPanel的设置会写到这个文件),最终结果如下(把两行RewriteCond合并):
RewriteCond %{HTTP_HOST} ^(www.)?lordong.net$
RewriteRule ^blog$ /wp/ [R=301,L]

RewriteCond %{HTTP_HOST} ^(www.)?lordong.net$
RewriteRule ^blog/(.*)$ /wp/$1 [R=301,L]

通过这样修改后原来在Google Reader中订阅http://www.lordong.net/blog/feed的用户又可以继续看到新的文章了。不过如果是墙内的Reader还是被重置。

另外昨天做的“把博客的Feed托管到其它服务”,由于使用了FeedBurner FeedSmith插件,导致FeedSky源Feed被转向到FeedBurner,而后者的结果Feed是被墙的,所以FeedSky总是更新失败,禁用这个插件就解决了。

把博客的Feed托管到其它服务

星期三, 14 7 月, 2010

目前比较好的两家Feed托管服务是FeeBurnerFeedSky

FeedBurner是海外的托管商,目前已被Google收购,这应该是最可靠、最好的Feed托管服务,不过其Feed网址http://feeds.feedburner.com/目前已经被GFW认证,不翻墙是无法直接打开的。解决办法是使用海外的Feed Reader,比如Google Reader就是极佳的选择。我博客在上面的Feed是:http://feeds.feedburner.com/lordong

FeedSky是墙内的托管商,这便于墙内的Feed Reader订阅。我博客在上面的Feed是:http://feed.feedsky.com/lordong

两家的Feed托管服务都能对订阅进行统计,另外他们提供了固定的Feed链接,方便订阅。

自已博客上的Feed有可能会发生变化,比如我这个博客的目录“lordong.net/blog”被GFW认证过,因此不得不改博客目录为“lordong.net/wp”,这样原来订阅的人会无法获取后面的更新。如果之前就将Feed托管出去,订阅者订阅的是托管后的Feed,那么此时只要修改一下Feed托管的映射就搞定了,对订阅者来说就好象没发生过什么事一样。

另外FreeBurner提供了一个WordPress的插件FeedBurner FeedSmith,可以用于将订阅者订阅本地Feed的请求转到FeedBurner的Feed上,便于统计。

PS. 使用Feed Layout插件可以在Feed里给每篇文章的某部分添加特定的内容。

显示代码段的插件 – Syntax Highlighter

星期二, 13 7 月, 2010

插件全名:Syntax Highlighter for WordPress,由小日本wokamoto开发。

可以登录Wordpress后台在插件管理里直接添加新插件,输入插件名搜索即可找到,点该插件的“安装”链接即可。

使用方法:
需要使用“HTML”格式来编辑,如果使用“可视化”格式来编辑,拷贝并粘贴的代码其前缀空格或TAB键会被自动删除。
格式:[语言 参数=值]代码[/语言]
可选语言:as3, bash, c, cpp, csharp, coldfusion, diff, erlang, groovy, java, javafx, javascript, delphi, pascal, perl, php, powershell, python, ruby, shell, text, vb, vbnet, scala, sql, css, xml, html, xhtml, xslt
可选参数:
num – 起始编号,默认是1。比如num=10
highlight_lines – 高亮行(实际上是这些行的底色更深)。比如highlight_lines=”1,2,3″
gutter – 是否显示装订线,默认是true。比如gutter=”false”
ruler – 是否显示标尺,默认是false。比如ruler=”true”,效果未知
toolbar – 是否显示工具条,默认是true。比如toolbar=”false”
light – 是否简洁显示,默认是false。比如light=”true”,其结果是toolbar和gutter都不显示
font_size – 字体的相对大小。比如font_size=”80%”
lang_name – 是否显示语言名,默认是false。比如lang_name=”true”
(更多…)

关于XPath的一些参考链接

星期一, 12 7 月, 2010

为了解决新浪博客不全文输出也能在Google Reader中直接显示的问题,专门去研究了XPath的语法,尤其是document.evaluate的函数的参数及期格式。

这里是几个相关的链接:
>>利用 XPath-jQuery 集锦手册在 XPath 和 jQuery 之间做选择
>>document.evaluate的函数说明

搞定新浪博客RSS feed不全文输出

星期一, 12 7 月, 2010

从上周开始发现在Google Reader中订阅的一些新浪博客变成不全文输出了,刚开始以为是博主自己改的,后来在Twitter上看到有人说新浪对一些名人博客改为“不全文输出”,为此先鄙视一下新浪博客。

不全文输出的缺点有:

  • 必须打开原文才能看到全部内容;
  • Google Reader无法缓存全文内容,因此如果文章被删除就无法看到全文;
  • 手机上阅读很不方便,得打开原文并加载一些无意义的内容。

曾记得之前有人解决过这种不全文输出的订阅,因此在Google上做一了翻搜索,老肥博客的这篇《RSS feed 不输出全文?一样搞定你》文章给我了一些提示。

我通过Firefox的“工具->附件组件”功能搜索并添加了“Greasemonkey”的最新插件v0.8.20100408.6,重启Firefox后到google reader full feed changer下载最新的脚本,点该页上的“Install”按钮即可安装。特别说明一下,这种方法只对Firefox有效,其它浏览器或手机访问请绕行。

(更多…)

Google SSL在Chrome浏览器的解决方案

星期四, 8 7 月, 2010

IE和Firefox的解决方案参见《Google SSL搜索在FireFox和IE8中的解决方案

设置图示:

点谷歌浏览器的“选项”菜单弹出设置界面:
1. 点②处“添加”按钮,把Google英文设成浏览器启动的首页“http://www.google.com/ncr”,原因参见前面的链接
2. 点③处“默认搜索引擎”的“管理”按钮弹出搜索引擎设置界面。
3. 点④处“添加”按钮,弹出“添加搜索引擎”界面,在⑤处分别填上如下内容:
名称:Google SSL (可以随便写,这里为了区分其它搜索,特意加上SSL字样)
关键字:google.com
网址:https://www.google.com/search?hl=zh-CN&sourceid=chrome&ie={inputEncoding}&q=%s
4.  然后点⑥处把刚添加的“Google SSL”设成默认搜索引擎,并一路“确定”或“关闭”完成设置。

这样设置并重启谷歌浏览器后就可以在地址栏直接输入任何内容实现SSL搜索了。

给你的浏览器都设成隐身模式

星期四, 8 7 月, 2010

隐身模式的原理:
1. 在隐身模式下,打开的网页和下载的文件不会记录到您的浏览历史记录以及下载历史记录中。
2. 在您关闭已打开的全部隐身窗口后,系统会删除所有新的 Cookie。

也就是说你把浏览器设成隐身模式后,在你浏览完网页退出浏览器后你所浏览过的任何内容都不会保留在你的电脑上。

在网速都比较快的现今,没有历史缓冲也不会影响你浏览网页,所以强烈建议将浏览器设成隐身模式。可以防止你的隐私被他人彻取。

IE浏览器设置方法:

点“Tools(工具)->Internet Options(Internet选项)”菜单,在弹出的窗体按上图钩上②处即可。

(更多…)

PHP远程扫描端口源码

星期五, 2 7 月, 2010

有些时候我们通过路由器做了端口映射,想测试一下从外网通过自己的公网IP能不能连进来,一般我们都是找在外网的朋友帮ping一下,如果朋友都不在线自己又急着测试怎么办呢?

其实使用PHP的fsockopen函数可以实现连接端口来进行测试:
[php]
$fp = @fsockopen($yourip, $port, &$errno, &$errstr, 1); // 这里加@可以略过Warning的提示
if ($fp) {
echo $port . ‘,’;
fclose($fp);
}
[/php]

另外php的参考文档里说IP前缀加上”udp://”就可以测试UDP,可我实际测试时发现都能连接成功,因此此功能暂可忽略。原因参见http://php.net/manual/en/function.fsockopen.phpNotes部分,里面有一段Warning

源码下载:scanPorts.php.txt

本地测试:scanPorts.php (考虑到这不是并发扫描,建议每次扫描在100个端口范围内,但可以同时打开多个页面分别扫描)

本站改成使用不带www的顶级域名来访问

星期一, 28 6 月, 2010

更改原因:可以少输“www.”4个字符,简单就是方便。不过即使输入了网站也会自动转成不带”www.”的。

方法可以参考《实现abc.com自动转向www.abc.com的方法》,使用.htaccess Editor在线编辑把.htaccess改成:
RewriteCond %{HTTP_HOST} ^(www\.lordong\.net)(:80)? [NC]
RewriteRule ^(.*) http://lordong.me/$1 [R=301,L]
即可。

WordPress则需要使用管理员用户登录后台,到“设置->常规”里把“WordPress安装地址”和“博客地址”全改成不带www的就可以。

PS. 有时不希望一些JavaScript在Opera Mini上有效,可以这样判断:
var isOpera = /Opera/.test(navigator.appName);
var isMini = /Mini/.test(navigator.appVersion);

if (!isOpera || !isMini) {
// 这里是非Opera Mini执行的脚本
}