Submitted by shqzzy on 2008, November 20, 11:18 PM
为二级域名的问题搞了2天,狂郁闷。。。。先是用程序,感觉太累赘,简单的又不好使(用iframe嵌入,比较糟糕,不能像真正的域名一样访问),后来发觉URL Rewrite是最简单的解决办法……搜IIS用的Rewrite,下载、试用……,查资料、看说明——唉,E文不好,走了不少弯路!莫笑(地处偏僻,身边难见高人)
如果是用Apache就简单多了,默认的Rewrite模块功能强大,可以轻松提取主机头信息。
具体内容:
0、首先需要一个有效的顶级域名,并且设置该域名下二级域名的泛解析到虚拟主机所在服务器IP(即如:*.eboat.cn => 123.234.55.101)。
1、在
http://www.helicontech.com/download.htm下载ISAPI_Rewrite Lite Free版本。版本不用太高,如果愿意付点$,用Full版当然也不错哦。安装,随便装在哪个位置。
注意:Lite版本不支持虚拟主机层次的配置,但仅仅是配置(就是dll只能读取自身安装目录下的全局配置httpd.ini)。如果是仅用于某虚拟主机的任意二级域名解析,可以将ISAPI_Rewrite.dll仅放置在该虚拟主机的配置中(即不在IIS的“网站>ISAPI筛选器”中插入,而是添加在虚拟主机网站的ISAPI筛选器中),这样就不会影响服务器对其它网站的处理。
2、将需要二级域名的虚拟主机的主机头置空,使得所有未在服务器上单独配置的虚拟主机域名都被定向到此处。注意!不是在服务器上单独新建一个无主机头的网站,必须在需要实现二级域名的当前网站上进行URL的Rewrite配置。这点很重要。
3、将ISAPI_Rewrite安装时自动配置在IIS中的全局设定取消(IIS>网站>ISAPI筛选器,删除ISAPI_Rewrite),在需要二级域名解析的虚拟主机(网站)中配置ISAPI_Rewrite.dll(属性>ISAPI筛选器>添加...,名称可以随便写,如Url-Rewrite)。
4、修改ISAPI_Rewrite安装目录下的配置文件httpd.ini。举例如下:
- [ISAPI_Rewrite]
- RepeatLimit 1
- # Defend your computer from some worm attacks
- RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]
-
- # 排除当前虚拟主机需要正常访问的域名(web.eboat.cn www.eboat.cn)
- # RewriteCond Host: (?:web|www)\.eboat\.cn
- # 多数情况下是一个,即当前提供二级域名服务的系统(如建站系统)
- RewriteCond Host: web\.eboat\.cn
- RewriteRule (.*) $1 [L]
-
- # 解决不规范目录(末尾无/)的问题
- # 但前提是目录名不含‘.’而文件名必须包含,否则无法区分两者
- # 如果保证URL中的目录名称规范,则无需此规则
- RewriteRule ^/([^.]+[^/]$) /$1/ [L,R]
-
- # 提取任意的二级域名名称(即第一个词汇)
- # 用[a-zA-Z0-9_-]限制名称字符,重写Url到Home/子目录下
- # 如 test.eboat.cn => web.eboat.cn/Home/test
- RewriteCond Host: ([a-zA-Z0-9_-]+)\.eboat\.cn
- RewriteRule ^/(.*) /Home/$1/$2 [I,L]
注意!上面的规则不能写成
RewriteRule ^/(.*) http\://web\.eboat\.cn/Home/$1/$2 [I,L]
这也是必须在系统所在网站上解析的原因。如果最后是[I,R],访问是可以的,但是浏览器的地址栏会显示实际的Url,达不到透明二级域名的效果。
总结:
之前查了Google,没找到简单实现的例子。其实这主要是规则上的问题,即使是将ISAPI_Rewrite放在IIS的“网站”全局配置中也是可以的,因为规则不会匹配其它的网站(顶级域名限制),Rewrite不会起作用。只是放在全局配置中,访问其它网站也要经过这个.dll过滤器,或多或少的有些不合理。
成功配置和运行,网上说要用Full的破解版才行(1.x的版本,试过可行)。所以这里特地将Lite免费版的用法贴出来。
(
注意:最后可能需要重启IIS服务器,检查一下ISAPI过滤器中Rewrite是否已经载入——绿色的向上箭头。另外,
如果是NTFS文件系统,ISAPI_Rewrite的安装目录需要添加网站用户或everyone的写权限!)
» 阅读全文
Tags: rewrite, 规则
asp | 评论:0
| Trackbacks:0
| 阅读:18
Submitted by shqzzy on 2008, November 20, 5:10 PM
- http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2007/08/JavaScriptClosures.html
- http://www.felixwoo.com/article.asp?id=294
- http://www.cn-cuckoo.com/2007/08/01/understand-javascript-closures-72.html
- http://www.jibbering.com/faq/faq_notes/closures.html
- http://www.cristiandarie.ro/asp-ajax/JavaScriptClosureInheritance.html
- http://realazy.org/lab/js/closure.html
- http://www.ibm.com/developerworks/cn/web/wa-memleak/index.html
- http://blog.csdn.net/Ant_Yan/archive/2008/09/21/2958659.aspx
- http://blog.csdn.net/Ant_Yan/archive/2008/09/24/2972572.aspx
以上每篇文章都详细的说明 javascript的闭包.
» 阅读全文
Tags: javascript, 闭包
ajax | 评论:0
| Trackbacks:0
| 阅读:36
Submitted by shqzzy on 2008, November 20, 5:00 PM
以下情况不要建索引:
- 1、如果每次都需要取到所有表记录,无论如何都必须进行全表扫描了,那么是否加索引也没有意义了。
- 2、对非唯一的字段,例如“性别”这种大量重复值的字段,增加索引也没有什么意义。
- 3、对于记录比较少的表,增加索引不会带来速度的优化反而浪费了存储空间,因为索引是需要存储空间的,而且有个致命缺点是对于update/insert/delete的每次执行,字段的索引都必须重新计算更新
以下情况要建立索引
SELECT c.companyID, c.companyName FROM Companies c, User u WHERE c.companyID = u.fk_companyID AND c.numEmployees >= 0 AND c.companyName LIKE '%i%' AND u.groupID IN (SELECT g.groupID FROM Groups g WHERE g.groupLabel = 'Executive')
这 条语句涉及3个表的联接,并且包括了许多搜索条件比如大小比较,Like匹配等。在没有索引的情况下Mysql需要执行的扫描行数是77721876行。 而我们通过在companyID和groupLabel两个字段上加上索引之后,扫描的行数只需要134行。在Mysql中可以通过Explain Select来查看扫描次数。可以看出来在这种联表和复杂搜索条件的情况下,索引带来的性能提升远比它所占据的磁盘空间要重要得多。
这里有一篇文章系统讲解 数据库索引
» 阅读全文
Tags: 索引, mysql
数据库 | 评论:0
| Trackbacks:0
| 阅读:31
Submitted by shqzzy on 2008, November 20, 4:53 PM

我们无法追溯每个人快乐的源泉,但是每个人的不快乐都是来自于自身的贪、嗔、痴,佛家修行的宗旨也是去除人体内的贪嗔痴,将其转换为戒定慧
» 阅读全文
Tags: 生活
生活感悟 | 评论:0
| Trackbacks:0
| 阅读:33
Submitted by shqzzy on 2008, November 20, 1:47 PM
Tags: javascript, arguments
ajax | 评论:0
| Trackbacks:0
| 阅读:28
Submitted by shqzzy on 2008, November 19, 10:37 AM
大家都知道 数组,对象直接附值在javascript是引用的.所以 有时候我们想克隆对象怎么操作呢?
可以使用: 数组的 slice,concat等方法:
JavaScript代码
- <script type="text/javascript">
- <!--
- arr=[1,2,3]
- var arrClone=arr.slice();
- var arrRef=arr
- arr[1]=4;
- alert(arr)
- alert(arrClone);
- alert(arrRef);
-
-
-
-
- </script>
这个应用经常在 排序的时候用到. 比如:网易的相册 的排序相册的时候 就用到这个功能.
我们看看其它的JS框架的克隆代码:
对象的克隆:
JavaScript代码
- function clone(myObj)
- {
- if(typeof(myObj) != 'object') return myObj;
- if(myObj == null) return myObj;
-
- var myNewObj = new Object();
-
- for(var i in myObj)
- myNewObj[i] = clone(myObj[i]);
-
- return myNewObj;
- }
» 阅读全文
Tags: clone, slice, concat, 克隆
ajax | 评论:0
| Trackbacks:0
| 阅读:52
Submitted by shqzzy on 2008, November 19, 12:01 AM
全面理解javascript的caller,callee,call,apply概念(修改版)
推荐一下,上面的文章不错的. 你要看的话,不要看评论,看文章就行.
理解一下几个概念:
callee: 返回正被执行的 Function 对象,
用途:
1.通常用到 递归上面. 如:
//递归计算
var sum = function(n){
if (n <= 0)
return 1;
else
return n +arguments.callee(n - 1)
}
2. 用在判断我函数的参数是不是跟本身设置的多还是少.
//用于验证参数
function calleeLengthDemo(arg1, arg2) {
if (arguments.length==arguments.callee.length) {
window.alert("验证形参和实参长度正确!");
return;
} else {
alert("实参长度:" +arguments.length);
alert("形参长度:" +arguments.callee.length);
}
}
caller: 该函数调用了当前函数,
1. 通常在我这个函数有没有被其它函数调用要. 如果没有 值为null 有就是调用那个函数 如:
function test(){arguments.caller = callFunction; //因为callFunction调用它} function callFunction(){test();}
如果直接执行 test() ; 那么 arguments.caller 为null; 没人调用我呀
2. 判断函数的
call:调用一个对象的一个方法,以另一个对象替换当前对象。
» 阅读全文
Tags: javascript, caller, callee, call, apply
ajax | 评论:1
| Trackbacks:0
| 阅读:87
Submitted by shqzzy on 2008, November 16, 10:20 PM
百度竞价排名 造假 --CCTV新闻30分钟 报告的节目
» 阅读全文
Tags: cctv, 百度
网站优化 | 评论:2
| Trackbacks:0
| 阅读:187