2011年12月21日星期三

[jQuery]当$遇上HTML


$是jQuery里最常用的符号(当然其他类库也喜欢用$,可能看到后就想到Dollar),在jQuery里的含义非常广泛,详见jQuery()
今天用Ajax返回HTML时遇到一个$(html)的问题,顺便看了一下jQuery处理HTML的方法。
$.get({ url: "test.html",function(data){
var $d=$(data);    }});
这样得到的$(data)是一个数组(NodeList类型)
image
如果是正常的data应该是一个HTML
image 
jQuery是怎么去掉那些多余的HTML代码的呢?
从jQuery的源码可以看出,当$()里面包含了一个String类型的参数,就会判断是否需要添加或者重构。
重构的代码:
ret = buildFragment( [ match[1] ], [ doc ] );
在buildFragment里面jQ用createDocumentFragment的方法重建了HTML文档也是清理的第一步。
然后又一翻天书(正则)去空格与调整为全是小写字母后,到了关键一步。
这里jQ用了一个比较有趣的方法来清理HTML
截取部分代码:
var div = context.createElement("div");

// Go to html and back, then peel off extra wrappers 

div.innerHTML = elem //html document 

div.childNodes;
这个方法可真是太爽了,直接用div里面包含整个HTML文档,然后用childNodes的方法直接把HTML文档直接转换为NodeList类型,并且轻松的去除了其他额外的标签。
然后:
fragment.appendChild( ret[i] ); 
这样只需要刷新一次DOM结构就可以把HTML文档处理的比较干净,里面不仅包含了body里面的所有DOM元素而且还包含meta与title等有用信息当然jQ有对script与style标签特殊处理,这里就不说了。
jQuery用的一种思想来写代码,这种思想与Google的页面没有很相像,学习与理解标准的路还很漫长,我还是继续努力吧~哈哈
推荐一篇文章LifesingerGoogle首页代码的分析,看后肯定让你受益匪浅的。而他本人那种研究与探索的精神更值得我们学习,向勇于挑战的人们致敬!

2011年12月7日星期三

drupal imagecache 模块 在程序中调用

由于需要在程序中调用 drupal imagecache 模块 的动作设定, 在 CCK 与 views 等中很容易就可以调用  imagecache 的设定。

但由于要在程序中手动的调用 imagecache,只要简单的设用就可以了

print theme('imagecache'$preset$image['filepath'], $alt$title,  $attributes); ?>

如:

print theme('imagecache''small''test.jpg''just a test image''test image'); ?>

2011年11月13日星期日

drupal多站点配置


第一步,在你的主站sites下建立aaa和bbb文件,即xampp/htdocs/drupal/sites/aaa和xampp/htdocs/drupal/sites/bbb。把sites/default中的default.settings.php复制到aaa和bbb中,并分别改名为settings.php
第二步,分别打开aaa和bbb的settings.php,找到
# $base_url = 'http://www.example.com';  // NO trailing slash!
去掉前边的#,改为:
$base_url = 'http://aaa';  // NO trailing slash!
以及
$base_url = 'bbb';  // NO trailing slash!
第三步,打开xampp/apache/conf/extra/httpd-vhosts.conf,在最后的部分添加几个virtual host,如下代码:
NameVirtualHost *:80

    DocumentRoot "c:/xampp/htdocs/drupal" #这里是你drupal主站的绝对路径
    ServerName aaa

    DocumentRoot "c:/xampp/htdocs/drupal" #这里是你drupal主站的绝对路径
    ServerName bbb
重启apache服务
第四步,打开C:\Windows\System32\drivers\etc,打开hosts文件(你懂得)
添加:
127.0.0.1 aaa
127.0.0.1 bbb
哦了,在浏览器输入 http://aaa 和 http://bbb即可安装这两个字站点啦

2011年11月2日星期三

awstats auto update的方法及perl脚本


awstats auto update的方法及perl脚本

awstats是一个功能强大的日志分析工具,对于一个简单的网站而言,只需要根据awstats官方网站的帮助来安装和配置即可使用。但是如果需要服务多个网站,例如提供虚拟主机的ISP,需要统计大量的网站的话,常规的方法有点麻烦。
实现自动统计更新是一个必然的需求。实现起来也比较简单,一些shell脚本+perl脚本,配置一下crontab就差不多了。
1. 配置Apache调整日志存储方式
为每一个虚拟主机单独保存日志,这样便于统计。注意,配置的命令必须在每一个虚拟主机的配置里面,即里,简单的配置如下:(以www.hzqbbc.com为例)
CustomLog /var/log/httpd/www.hzqbbc.com_log combined
2. 配置awstats 的per Host config
为每个要进行统计的虚拟主机单独配置一个配置文件,在我的awstat安装中配置文件的目录放在/etc/awstats下,每个虚拟主机的配置文件名都有如下格式(以hzqbbc.com为例):
awstats.www.hzqbbc.com.conf
每个配置文件里只需要指定几个主要参数即可。其中如下几个参数必须指定:
LogFile="/var/log/httpd/www.hzqbbc.com_log"
SiteDomain="hzqbbc.com"
HostAliases="www.hzqbbc.com 127.0.0.1 localhost"
3. 自动更新脚本
以下是自动更新脚本,命名为cron.pl

#!/usr/bin/perl -w
use strict;
my @list = glob("/etc/awstats/*");

for(0...scalar @list-1) {
         $list[$_]=~s#.*/awstats\.([^\/]+)\.conf$#$1#;
}

foreach(@list) {
         `perl awstats.pl -config=$_ -upate`;
}
exit(0);
将这个perl脚本防止在awstats的cgi-bin目录里,即/var/www/cgi-bin/awstats/wwwroot/cgi-bin里
4. 配置crontab
以root身份登陆系统,执行crontab -e,增加一条记录:
0 */3 * * * (cd /var/www/cgi-bin/awstats/wwwroot/cgi-bin/; perl cron.pl)
这里定义了每隔3小时呼叫一次cron.pl并更新日志。如果机器的负载很高,并且虚拟主机的数量巨大,那么建议每天只更新1次,并且在深夜负载低时进行。
经过上述配置后,以后新增的虚拟主机只需要简单增加一个awstats的配置即可实现自动的日志分析。访问时,只需要将URL中的config=xxx替换成相应网站名即可。

2011年11月1日星期二

*火影与海贼:他们告诉我*

曾有人问我,为什么会花大量的时间去看一部动漫。海贼或是火影。或许很多人觉得这是一件幼稚无聊且浪费时间的事儿。而在这里我想说。我看的不是动漫。是人生。不是他们的脸。是精神

火影表面上看是一场场忍者之间的对决,实际上是一场场人生哲学的较量。一个个忍者就是一个个人生观的载体。几乎每场较大的战斗,敌我双方都会回顾生命的历程,探讨人生的意义。

而海贼王带给我的最大意义则是心灵的觉醒。他们用永垂不朽的意念告诉我。如果你有梦想,就要去捍卫它。

你要有死都不怕的信念。你要相信你的朋友。那个整天一副无忧无虑信心十足的路飞告诉我。

他说、我是要成为海贼王的男人!是的、有信仰的男人最帅。

是否还记得曾经的梦想。是否因为走得太远而忘记了来时的路。是否在日复一日重复的劳碌中消耗掉了所有沸腾的热血。你开始习惯、然后顺从、最终麻木。有朋友说、梦想这东西早让生活吃的一干二净连渣都不剩了。我说、它怎么吃进去的你就要让它怎么吐出来。只要有死都不怕的信念,无惧一切的勇气。遥远能怎样?妄想又能怎样?若你连想都不敢想,试问还有什么资格取笑别人的天真呢。

你要依照自己的信念做事。不抱怨生活。努力使自己变得强大。那个刻苦顽强的卓洛告诉我。

光有梦想而不去行动也是无用的。企图你想要拥有的生活,只靠空想,这种完全不费力的白日梦谁都会做。除非你用实际行动,按部就班的改变现状。否则一切都将沦为空谈和笑柄。一张地图无论多么详尽比例多么精确。他永远不可能带你在地面上移动半步。拖延会使你裹足不前,它来自恐惧,要想克服恐惧必须毫不犹豫起身行动。不然所有的果实都将成为梦中幻影。说那么多想那么多,也只不过是浪费唾液和脑细胞而已,唯有行动。索隆的强悍,人尽皆知。他受过很多伤,从未喊过一声疼。他受过很多苦,从未喊过一声累。每一次的受伤,他都用心去体会,用心去反思。有些时候,受伤并不是无能,而是教我们怎样变得更强。承受多少伤痛,流下多少血液,这些都不重要。重要的是,又向自己的理想迈进了一步。

你要朝着自己的道路前进。勇敢的生活。那个海上战士乌索普告诉我。

其实他是离生活最近的人。我们都是普通人的肉体凡身,没有luffy的能力,没有zoro的刀功,没有sanji的踢技,没有chopper的变身。我们大多头脑平凡,没有nami的冰雪聪明,没有robin的冷静优雅。 是啊,ussope也没有。 他有一点点小聪明,很爱吹牛。给人的印象都是“最弱”,但是心中却充满着对勇敢的海上战士的憧憬和想像。他说,你们的梦想是什么?你们不要让梦想之火熄灭,要朝着自己的道路前进。不管要停留到哪一天,不管失去什么东西,即使要在无人岛上迎接死亡,也要尊严地死去。

你要找到那个想要守护的人。然后用心对待。即便付出生命也在所不惜。那个总是叼着烟拽拽的山治告诉我。

牺牲了自己去救所爱的人。这就是骑士精神。人是需要一个不论走到哪里都可牵念的人的,这样才能减轻因为羁放太久而产生的无根恐慌。人生在世只有一次,不必勉强选择自己不喜欢的路,随性而生或随性而死都没关系,不过,无论选择哪条路,都不要忘记保护自己所珍惜的人。在我们的一生中,总会有想要要守护的人。找到他。然后彼此珍惜。未尝不是件幸福的事呢。

人在为了保护最重要的人的时候,会变得非常坚强。那个隐忍无私的白告诉我。

即便是作为一个工具,也要守护自己最重要的人。 白把自己当作再不斩的工具,一件工具只有付出,而不求回报。仅说这样的情感,世上能有几人做得到呢。为什么白的故事让很多人留下了眼泪,因为我们生活中太缺乏这种信念了,说具体一点,就是我们自己太缺乏这种信念了。我们不知道什么对自己是最重要的,更谈不上怎样去守护它。白在遇到再不斩之后,找到了自己生命的意义,君麻吕在遇到大蛇丸以后,也找到了自己生命的意义。如果你为白而感动,就要像他那样,找到自己最重要的东西,并守护它。

只要活下去,一定会有很多令你高兴的事情发生。那个聪明坚韧的娜美告诉我。

即便遭受重大的打击,也能够隐忍坚强地活下去,自强不息乐观地面对。首先她目标明确,且懂得凭借自己的能力去完成自己想要达成的心愿。一个成年人,的确是不应该成天期望别人赠予你物质的享受,而是要靠自己。即便是女子,也应如此,将希望寄托于自己。

我要用我所学到的航海技术,到世界各地去旅行。再把我所看到的一切,画成一张世界地图,她说。环游世界,这应该是无数人的向往,只是大多数人都因种种原因搁置了。向而不往才是常态。其实趁着年轻,还是应该多出去走走的。对于一个女孩子来说,见识很重要。见的多了,自然就会视野宽广、心胸豁达,女性所特有的一些弱点便会淡化、优点便会突出了。万物皆为我所用,但非我所属。当人能看透这点时,也就没什么放不下,好烦忧的了。

安慰捉襟见肘,毕竟你无法感同身受,人若有大悲通常是不语的。那个隐忍强大的宇智波鼬告诉我。

原谅我吧……佐助……这是最后一次了……当时我就泪奔了。火影里看似每个人都有一段痛苦的曾经,但是谁都无法承受鼬所承担的痛苦。若能挖出他的心,你看到的定是千疮百孔的溃烂。该是怎样的疼痛,怎样的信念得以在亲手杀死包括父母在内全村的人后,忍受着自己最爱的人的憎恨,背负着一切罪过存活于世。一直那么孤寂、隐忍、痛苦地活着,独自承担着一切黑暗。很多时候,人都是缺乏忍耐的,无法承受生活之不公、别人的误解。我们难过、倾诉、抱怨、博得同情,但是最终发现无用。能走进你内心的人太少,真正了解你的人更少。大家都过着自己的生活,与别人关联甚少。这个江湖,本来就是素淡而无情。

你要知道,这个世上,总会有人爱你。那个打小就被人称为怪物受人排斥厌恶的我爱罗告诉我。

你们能理解吗?不被任何人需要,只有“活着”的痛苦。不可否认,人都是孤独的。很多时候我们都是并不被人理解的,记得一个长辈说过。人生最难的两个件事就是:把你的观念装进别人脑里,把别人的钱装进你的兜里。但是我们又无时无刻不在做着这两件事。想来童年对一个人来讲还是很重要的,家庭环境与成长中孩子的性格也是息息相关的。孤寂、痛苦伴随着我爱罗的整个童年,造就了其淡漠薄凉的性格。可是即便是千年寒冰也会被爱融化的。当他被晓组织抓走后,众人协力舍身去救他那刻,千代婆婆为他付出生命的瞬间,那份足以融化整个冬天的温暖也足以融化那颗似千年寒冰的心了。当他回到家,站在城外,看到全村的人来迎接,来庆贺,在那一刻的感动与震撼,无语言表。

我也想总有一天成为被人需要的存在……并不是作为恐怖的兵器……作为砂忍村的风影,亲爱的我爱罗先生,您做到了。

你要相信世界上一定有你的爱人,他一定会找到你。你要等。

不知为什么,即便经历再多黑暗,仍会觉得前方是明亮了。就是会有这种感觉。

既然活着,就总得给自己一些希望不是。

就像歌里唱的,都会好的,总会有的 ,那些风雨还有阴霾,关于未来,请你坦然,不要离开。 

就这样吧。永远年轻,永远热泪盈眶。在路上,热血沸腾。

感谢动漫。感谢你们。

2011年10月31日星期一

Apache Rewrite 规则详解


在开篇之前:
我想说这篇文章其实是我刚刚接触Rewrite的时候学习的文档,应属转载,但是在这里我不想写明原地址,原因是文章中大多数给出的配置命令经实验都是错误的。需要原文的可以在谷歌上搜索一下”Apache Rewrite 规则详解”
好在我对正则表达式有所了解,把原文的代码都通过自己的理解改写了一下,并都能够达到题设的要求,并联想需求添加了例子。
本文是经过我实验后修改有效的,如果还是出现500错误请去掉 # 及后面的注释(也许有些环境不支持中文注解),如果还是错误请在下面给我留言。
1、Rewrite规则简介:
Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。
基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。
基于目录级的(.htaccess),要注意一点那就是必须打开此目录的FollowSymLinks属性且在.htaccess里要声明RewriteEngine on。
2、举例说明:

例一.下面是在一个虚拟主机里定义的规则。功能是把client请求的主机前缀不是www.kiya.cn和70.40.213.183都跳转到主机前缀为http://www.kiya.cn,避免相同内容的网页有多个指向的域名,如http://kiya.cn。
NameVirtualHost 70.40.213.183:80
ServerAdmin slj@kiya.cn
DocumentRoot “/web”
ServerName kiya.cn
RewriteEngine on #打开rewirte功能
RewriteCond %{HTTP_HOST} !^www.kiya.cn [NC] #声明Client请求的主机中前缀不是www.kiya.cn,其中 [NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC] #声明Client请求的主机中前缀不是70.40.213.183,其中 [NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^$ #声明Client请求的主机中前缀不为空
RewriteRule ^(.*) http://www.kiya.cn/ [L] #含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到http://www.kiya.cn/,[L]意味着立即停止重写操作,并不再应用其他重写规则。这里的.*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个标记,以便于后面的应用.就是引用前面里的(.*)字符。
例二.将输入 en.sicasoft.com 的域名时跳转到www.sicasoft.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^en.sicasoft.com [NC]
RewriteRule ^(.*) http://www.sicasoft.com/ [L]
例三.赛卡软件近期更换了域名,新域名为www.sicasoft.com, 更加简短好记。这时需要将原来的域名ss.kiya.cn, 以及论坛所在地址ss.kiya.cn/bbs/定向到新的域名,以便用户可以找到,并且使原来的论坛 URL 继续有效而不出现 404 未找到,比如原来的http://ss.kiya.cn/bbs/tread-60.html, 让它在新的域名下继续有效,点击后转发到http://bbs.sicasoft.com/tread-60.html,而其他网页,如原先的http://ss.kiya.cn/purchase不会到二级域名bbs.sicasoft.com/purchase上,而是到www.sicasoft.com/purchase
按照这样的要求重定向规则应该这样写:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/bbs/
RewriteRule ^bbs/(.*) http://bbs.sicasoft.com/$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !^/bbs/
RewriteRule ^(.*) http://www.sicasoft.com/$1 [R=permanent,L]
3.Apache mod_rewrite规则重写的标志一览
1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo
13) PT(pass through to next handler) 传递给下一个处理
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量
4.Apache rewrite例子集合
URL重定向
例子一:
同时达到下面两个要求:
1.用http://www.zzz.com/xxx.php 来访问 http://www.zzz.com/xxx/
2.用http://yyy.zzz.com 来访问 http://www.zzz.com/user.php?username=yyy 的功能
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.zzz.com
RewriteCond %{REQUEST_URI} !^user.php$
RewriteCond %{REQUEST_URI} .php$
RewriteRule (.*).php$ http://www.zzz.com/$1/ [R]
RewriteCond %{HTTP_HOST} !^www.zzz.com
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^.]+).zzz.com http://www.zzz.com/user.php?username=$1
例子二:
/type.php?typeid=* –> /type*.html
/type.php?typeid=*&page=* –> /type*page*.html
RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]
RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT]
5.使用Apache的URL Rewrite配置多用户虚拟服务器
要实现这个功能,首先要在DNS服务器上打开域名的泛域名解析(自己做或者找域名服务商做)。比如,我就把 *.kiya.us和 *.kiya.cn全部解析到了我的IP地址70.40.213.183上。
然后,看一下我的Apache中关于*.kiya.us的虚拟主机的设定。
ServerAdmin webmaster@kiya.us
DocumentRoot /home/www/www.kiya.us
ServerName dns.kiya.us
ServerAlias dns.kiya.us kiya.us *.kiya.us
CustomLog /var/log/httpd/osa/access_log.log” common
ErrorLog /var/log/httpd/osa/error_log.log”
AllowOverride None
Order deny,allow
#AddDefaultCharset GB2312
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/www.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]
在这段设定中,我把*.kiya.cn和*.kiya.us 的Document Root都设定到了 /home/www/www.kiya.us
继续看下去,在这里我就配置了URL Rewrite规则。
RewriteEngine on #打开URL Rewrite功能
RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$ #匹配条件,如果用户输入的URL中主机名是类似 xxxx.kiya.us 或者 xxxx.kiya.cn 就执行下面一句
RewriteRule ^(.+) %{HTTP_HOST}$1 [C] #把用户输入完整的地址(GET方式的参数除外)作为参数传给下一个规则,[C]是Chain串联下一个规则的意思
RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/dev.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]
# 最关键的是这一句,使用证则表达式解析用户输入的URL地址,把主机名中的用户名信息作为名为un的参数传给/home/www/dev.kiya.us目录下的脚本,并在后面跟上用户输入的GET方式的传入参数。并指明这是最后一条规则([L]规则)。注意,在这一句中指明的重写后的地址用的是服务器上的绝对路径,这是内部跳转。如果使用http://xxxx这样的URL格式,则被称为外部跳转。使用外部跳转的话,浏览着的浏览器中的URL地址会改变成新的地址,而使用内部跳转则浏览器中的地址不发生改变,看上去更像实际的二级域名虚拟服务器。
设置后重启Apache服务器就大功告成了!

今天上网看到了有人提一个问题:

求Rewrite 防盗链正则
不允许www.im286.com www.chinaz.com 这两个网站盗链 , 其它的网站都可以盗链的规则怎么写.
论坛中的答案是:
RewriteEngine On
RewriteCond %{HTTP_REFERER} chinaz.com [NC]
RewriteCond %{HTTP_REFERER} im286.com [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|rar|zip|txt|ace|torrent|gz|swf)$ http://www.xxx.com/fuck.png [R,NC,L]

介绍一篇文章:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html

一、关于是否需要使用完全转义,比如在 RewriteCond %{HTTP_REFERER} chinaz.com [NC] 中 把 chinaz.com 改成 chinaz\.com

答案是,两者都是可以的。
二、今天在做 YOURcaddy.com (就是我去年做的PlanetCoachella的变形)的时候,在 GoDaddy 主机上无法正常转向,后来找到了问题:
在HostMonster以及我自己的机器上,是用
RewriteRule ^business/([^\.]+)$ biz/detail.php?name=$1 [L]
达到改写的。而在Godaddy主机上,是这样:
RewriteRule ^business/([^\.]+)$ /biz/detail.php?name=$1 [L]
目标文件前多了一个/
现在想想,可能是因为没有指定RewriteBase,至于到底是不是我改日再验证一下。
三、添加两个关于判断 USER AGENT 例子和自动添加.php扩展名及自动换.html到.php扩展名的例子:
1
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* – [F,L] 这里”-”表示没有替换,浏览器为IE和Opera的访客将被禁止访问。
2
RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
RewriteRule ([^/]+)\.html$ /test/$1.php [L]
#for example: /test/admin.html => /test/admin.php
限制目录只能显示图片
< IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^.*\.(gif|jpg|jpeg|png|swf)$
RewriteRule .*$ – [F,L]
< /IfModule>

补充,关于特定文件扩展名的重写。

重写有某些扩展名的文件:
RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L]
如果要排除一些扩展名:
RewriteRule !\.(js|ico|gif|jpg|JPG|png|PNG|css|pdf|swf)$ index.php


1) R 强制外部重定向 
2) F 禁用URL,返回403HTTP状态码。 
3) G 强制URL为GONE,返回410HTTP状态码。 
4) P 强制使用代理转发。 
5) L 表明当前规则是最后一条规则,停止分析以后规则的重写。 
6) N 重新从第一条规则开始运行重写过程。 
7) C 与下一条规则关联 

如果规则匹配则正常处理,以下修正符无效 

8) T=MIME-type(force MIME type) 强制MIME类型 
9) NS 只用于不是内部子请求 
10) NC 不区分大小写 
11) QSA 追加请求字符串 
12) NE 不在输出转义特殊字符 \%3d$1 等价于 =$1

新款翻墙工具,能看YOUTUBE视频,并且速度和优酷土豆一样快,比轮子的东西不知道高到哪里去了!


新款翻墙工具,能看YOUTUBE视频,并且速度和优酷土豆一样快,比轮子的东西不知道高到哪里去了!

goagent教程详细版:
自从用了goagent,上facebook,twitter,看youtube那真是小菜一碟。而且看youtube的流畅度和优酷一样,不信?你试试。

教程开始!!!
第一步:申请Google App Engine账号(其实就是申请Gmail账号,两者通用)

网址是http://appengine.google.com
如果已有谷歌账号,那就直接登录吧。(图1)


第二步: 创建Google App Engine的ID
顺利登录后,点击Creat an Application(图2)接着输入你的手机号码,国家选择Other(Not Listed) (图3)

需要注意的是,手机号码前面要+86 格式如:+8613888888888。然后等待收取手机短信,收到短信后(一串数字号码)填入表单,点send提交.
几秒后,谷歌会发来短信(免费的),里面有一串数字,填上即可。(图4)
点击send后,Google App Engine账号即被激活,然后就可以创建新的应用程序了。页面会自动转入“My Applications”页面,点击“Create an Application”新建应用,如(图5)
一个Gmail账户最多可以创建十个Google App Engine应用。每个应用每天有1GB免费流量,不够的话,多申请几个就可以了(无需再进行手机验证)。下面填写新应用的必要信息,如(图6)
在(图6)中第一处添加一个应用名称,如123abc验证一下是否可用,如果通过那么123abc就是你的Appid(一定要记住这个id!),而123abc.appspot.com就是你的应用服务器地址了。第二个空格就是给你的应用取个名字,可以随便填,最后点击提交按钮,如果能看到(图7)这个页面,就说明你成功创建了一个新的应用.

第三步: 下载goagent客户端

下载地址:http://code.google.com/p/goagent/
解压后会看到2个文件夹

1.双击server\uploader.bat(linux/mac用户请运行uploader.py),先输入你的appid(不要额外加上.appspot.com),然后会提示你输入Gmail邮箱和密码,(输入密码时将看不见任何符号,但你不用管他,输完密码后按回车就可以了)接着程序会自动上传至谷歌服务器,看到方框内的文字尤其是最后一行就表示上传成功了。(图8)
2.用记事本打开server文件夹下的app.yaml,在第一行的application:处输入你的id(图9)3.用记事本打开local文件夹下的proxy.ini 在appid=处填上你的id(图10)

4.至此,所有设置都已完毕。以后每次要翻墙前先打开local文件夹下的goagent.exe
注:第一次运行请用管理员权限运行

chrome请安装SwitchySharp插件,然后导入这个设置https://raw.github.com/phus/phus-config/master/SwitchyOptions.bak(复制这条链接到迅雷新建任务下载)
firefox请安装AutoProxy
不推荐使用IE浏览器。
收拢此信息

上海松善实业有限公司

    上海松善实业有限公司是一家集多品牌销售于一体的电线电缆骨干企业,公司成立于2016年。 公司拥有国内各大品牌:起帆、远东、上上、江南、胜华等。     主要产品有:高低压电力电缆、橡套电缆、控制电缆、架空绝缘电缆、塑胶电缆、电子计算机电缆、通讯电缆、...