分享知识的快乐,尊重他人创造的知识 注册 | 登陆
浏览模式: 标准 | 列表全部文章

[资料]在IIS中用ISAPI_Rewrite Lite版配置虚拟主机支持二级域名

为二级域名的问题搞了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。举例如下: 
Java代码 复制代码
  1. [ISAPI_Rewrite]   
  2. RepeatLimit 1  
  3. # Defend your computer from some worm attacks   
  4. RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]   
  5.   
  6. # 排除当前虚拟主机需要正常访问的域名(web.eboat.cn www.eboat.cn)   
  7. # RewriteCond Host:  (?:web|www)\.eboat\.cn   
  8. # 多数情况下是一个,即当前提供二级域名服务的系统(如建站系统)   
  9. RewriteCond Host:  web\.eboat\.cn   
  10. RewriteRule (.*)   $1  [L]   
  11.   
  12. # 解决不规范目录(末尾无/)的问题   
  13. # 但前提是目录名不含‘.’而文件名必须包含,否则无法区分两者   
  14. # 如果保证URL中的目录名称规范,则无需此规则   
  15. RewriteRule ^/([^.]+[^/]$)  /$1/  [L,R]   
  16.   
  17. # 提取任意的二级域名名称(即第一个词汇)   
  18. # 用[a-zA-Z0-9_-]限制名称字符,重写Url到Home/子目录下   
  19. # 如 test.eboat.cn => web.eboat.cn/Home/test   
  20. RewriteCond Host:  ([a-zA-Z0-9_-]+)\.eboat\.cn   
  21. 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, 规则

javascript闭包:详细讲解javascript的闭包

  • 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, 闭包

什么时候才要建索引,什么时候不要建索呢?

以下情况不要建索引:

  • 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

你在哪,我一个人快乐不起来

你在哪,我一个人快乐不起来

我们无法追溯每个人快乐的源泉,但是每个人的不快乐都是来自于自身的贪、嗔、痴,佛家修行的宗旨也是去除人体内的贪嗔痴,将其转换为戒定慧

» 阅读全文

Tags: 生活

Javascript的arguments 灵活使用

 关于 javascript的arguments 的 使用

  • 1. 格式化输出
  • 2. 参数转为数组
  • 3. 创建预置参数
  • 4. 自引用函数

原文地址:http://www.sitepoint.com/blogs/2008/11/11/arguments-a-javascript-oddity/
翻译地址:http://www.gracecode.com/Archive/Display/2551#archive_commit

» 阅读全文

Tags: javascript, arguments

javascript 克隆clone对象不影响对象本身

大家都知道 数组,对象直接附值在javascript是引用的.所以 有时候我们想克隆对象怎么操作呢?
可以使用: 数组的 slice,concat等方法:

JavaScript代码
  1. <script type="text/javascript">  
  2.   <!--  
  3.     arr=[1,2,3]  
  4.     var arrClone=arr.slice();//克隆  
  5.     var arrRef=arr  
  6.     arr[1]=4;  
  7.     alert(arr) //改变元素. arr改变  
  8.     alert(arrClone);//克隆没有改变  
  9.     alert(arrRef); //直接引用. arrRef也改变了  
  10.   
  11.     
  12.      
  13.   //-->  
  14.   </script>  

这个应用经常在 排序的时候用到. 比如:网易的相册 的排序相册的时候 就用到这个功能.
我们看看其它的JS框架的克隆代码:
对象的克隆:

JavaScript代码
  1. function clone(myObj)  
  2. {  
  3.     if(typeof(myObj) != 'object'return myObj;  
  4.     if(myObj == nullreturn myObj;  
  5.   
  6.     var myNewObj = new Object();  
  7.   
  8.     for(var i in myObj)  
  9.         myNewObj[i] = clone(myObj[i]);  
  10.   
  11.     return myNewObj;  
  12. }  

 

» 阅读全文

Tags: clone, slice, concat, 克隆

javascript的几个难懂概念

全面理解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

CCTV 报道2个 百度的竞价排名造假

Tags: cctv, 百度

Records:23812345678910»