月度归档:2011年04月

最全的ASP.NET开源CMS汇总 转

编辑点评:汇总了一些asp.net开源cms,希望对学习ASP.NET的人员带来帮助.

  国内: 1.SiteServer CMS SiteServer CMS 网站内容管理系统(著作权登记号2008SR15710)是定位于中高端市场的CMS内容管理系统,能最近汇总了一些asp.net开源cms,希望对学习ASP.NET的人员带来帮助:

  国内CMS:

  1.SiteServer CMS

  SiteServer CMS 网站内容管理系统(著作权登记号2008SR15710)是定位于中高端市场的CMS内容管理系统,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大的网站平台。

  SiteServer CMS 是基于微软.NET 平台开发的网站内容管理系统,它集成了内容发布管理、多站点管理、定时内容采集
、定时生成、多服务器发布、搜索引擎优化、流量统计等多项强大功能,独创的 STL 模板语言,通过Dreamweaver 可视化插件能够任意编辑页面显示样式,生成纯静态页面。

  经历了七年的发展、众多项目的应用以及市场的检验,SiteServer CMS 不断吸收来自各方面的发展建议和成功经验,
其功能不断完善和发展,系统目前已经具有成熟稳定、运行速度快等特点,适合门户、政府、学校、企业以及其他各种资讯
类网站使用。

  下载地址:http://www.siteserver.cn/

  2.NetCMS
      NetCMS是基于ASP.NET2.0开发的网站内容管理系统,程序完全开源,没有任何文件加密, 不需要注册任何组件,完全开
源方便您二次开发。

    全新“网站模板与网站程序完全分离”的概念,具有强大的标签加样式的个性化组合,自定义标签、自定义表单、JS管
理加JS模型(自定义JS,系统JS)的灵活应用,支持不同频道、栏目、内容页、专题等应用不同的模板,随时能编辑、修改
和更换网站界面,系统集成类同Macromedia Dreamweaver一样简单的可视模板编辑方式,可批量设置属性,模板标签全面支持目前最受欢迎的DIV+CSS格式,支持批量绑定模板,完全做到轻松换肤。

  下载地址:http://www.aspxcms.com/

  3.ROYCMS

  ROYcms!NT内容管理系统是国内CMS市场的新秀、也是国内少有的采用微软的ASP.NET 2.0 + SQL2000/2005 技术框架开发的CMS,充分利用  ASP.NET架构的优势,突破传统ASP类CMS的局限性, 采用更稳定执行速度更高效的面向对象语言C#设计,沿续PETshop的代码框架,全新的模板引擎机制, 全新的静态生成方案,这些功能和技术上的革新塑造了一个基础结构稳定功能创新和执行高效的CMS。 

  功能特色:
  模板自由组合定制
  静态生成HTML
  资源无限级分类
  插件形式易于扩展
  命名规范适合二次开发 

  下载地址:http://www.roycms.cn/index.html

  4.网奇-Iwms系统

  网奇Iwms网站管理系统是由国内知名ASP.NET工程师木鸟开发的一套安全易用的网站管理系统,本系统采用ASP.NET内核制作, 本系统最大的特点是;后台管理功能强大,网站运行速度快,支持静态输出,网站安全性极高,对搜索引擎的支持性好,24小
时自动循环新闻采集,网站界面可任意定制各类精美页面!
  网奇iwms官网:http://iwms.wangqi.com/

  5.思想内容管理系统--SXCMS

  主要功能如下:
  支持会员、非会员在线投稿
  支持文章生成静态页,可自定义文章链接地址,支持URL跳转功能
  支持无限量添加文章、无限级分配栏目
  支持分栏目设置不同模板、不同参数、不同阅读权限
  支持定义栏目名称、栏目路径规则
  支持栏目URL跳转
  支持自定义某栏目生成内容页面扩展名
  支持分栏目设置keyword和description
  内置三种图片图片调用方式,可灵活调配前台显示页面
  支持动态调用文章点击数、评论数及其它各项参数
  评论采用Ajax页面无刷新技术
  支持专题功能
  支持前台模糊搜索功能
  支持文章分栏目分对象进行采集、采集后自动发布
  支持计划任务,自定义时间、周期进行更新、采集任务,支持自定义计划任务
  支持RSS信息订阅   
  内置网页防篡改功能
  支持动态或静态页面输出

  下载地址:http://www.sxcms.com/

  6.将博CMS--JUMBOTCMS

  是一套个人独立开发的内容管理系统,其前身为jbsitecms采用WEB2.0设计理念、无刷新更新页面,前台模板自定义
.NET 版本:VS2005+MSSQL2000
  1、基本模块还是文章、图片和下载(增加了视频模块)。
  2、将评论、公告、统计、友情链接、顶客等作为扩展插件,可灵活启用或关闭。
  3、增加了用户留言模块(插件形式)。
  4、部分标签发生了变化。
  5、其他小功能的更新很多,这里不一一陈述。 以上是功能上的更新,在技术上比较 v2008以 WebControls为主,而v2009融入了更多的前台技术……

  下载地址:http://jumbotcms.net/

  7. DotNetNuke(ASP.NET 2.0)
  DotNetNuke是一个Web应用框架的理想,为创建和部署的项目,如商业网站,企业内联网和外联网,在网上出版门户,并定制垂直应用软件。方便用户-DotNetNuke旨在使用户可以更轻松地管理所有方面的项目。

  下载网址:http://www.dotnetnuke.com/

  8.内容管理系统 DianCMS

  内容管理系统SQL版(DianCMS.SQL)是基于微软ASP.NET2.0、AJAX1. 0技术、采用MS SQL2000/2005存储过程进行多层架构开发的内容管理管理。其功能设计主要面向中大型企业、各个行业、事业单位以及政府机关等复杂功能站点。系统已建立文章系统、图片系统、下载系统、个人求职、企业招聘、房产系统、音乐系统、网上商店。使用自定义模型、自定义字段、自定义表单、自定义录入界面、会员系统等功能,您还可以轻松、灵活的建立适合自身需求的任何系统功能,最大化满足每个用户任何时候的不同需求。更多功能详见官方网站.

  9.Zoomla!逐浪CMS

  Zoomla!逐浪CMS是功能强大的网站内核与管理系统,集成内容管理\OA\SNS\项目管理\采集\邮件订阅等强大功能,基于c#语言.net架构开发,是目前中国唯一同步支持MSSQL与Oracle两大数据库的高端CMS,用于快速构建高效门户网站,中国首家公开提供门户站群系统的高端CMS研发厂商。

  演示地址:http://demo.zoomla.cn/index.html

  下载地址:http://www.zoomla.cn/index.shtml

  10.网站快车.NET网站管理系统

  网站快车.NET  是集本公司八年CMS系统开发经验之大成,投入了巨大心血和精力开发的功能强大、运行速度快、安全可靠的新一代网站管理系统(CMS)。本系统采用MS SQL 和存储过程,系统运行速度快,安全性非常好,创新的可视化标签系统和数据模型功能,让你用本系统可以建立几乎所有类型的网站,开发任何风格的网站风格。系统不但拥有丰富的模板,同时还提供相当丰富的定制服务,我们可以为你定制您心目中理想的网站。
  快车系统高性能的网站管理系统,  经测试200万数据, 5千栏目的条件下,系统运转如飞, 速度和静态页相当.海量数据网站当
然要用快车系统.
  快车系统 是扩展性最好网站管理系统, 数据模型(挂接表)功能, 令网站可以无限扩展功能.

  快车系统 是最好用, 最酷的网站管理系统 系统采用WEB OS的后台, 和WINDOWS的操作方式相似, 令从未从事网站管理的人,轻易上手, 多窗口操作, 各种工作可同时进行,  国内尚无第二家使用此技术.

  快车系统 是模板设计最灵活的网站系统, 所有标签可视化设计, 无需导入模板, 修改标签参数后,直接刷新页面就可以看到
效果. 无需记忆标签参数含义.

  高质量、高服务,高质量的后台系统,还有高质量的服务,我们的系统一次购买,终身享有技术支持和免费升级,无需每年支付使用费。

  下载地址:http://www.zydn.net/

  11.风讯dotNETCMS

  dotNETCMSv1.0是一款具有强大的功能的基于ASP.NET+MSSQL构架的内容管理软件,国内领先的第一款开源的、集成web2.0元素的、模块化的CMS建站系统。 dotNETCMSv1.0版功能: SQL数据库+内容管理+频道管理+发布管理+会员中心+插件管理(广告系统+采集系统+问卷调查+友情链接+统计系统+整合接口+文件对比+自定义字段+自定义表单+数据库维护) 

  程序特点:
        1.全部生成静态页面/动态页面
        2.完全人性化的操作方式
        3.系统内置标签和自由标签管理,可以生成任何页面需要的任何元素和样式
        4.集成了新闻采集系统
        5.会员管理系统,并与流行论坛高度整合
        6.自由化的权限分配管理
        7.全个性化模板生成,模板由用户自由定义
        8.投稿,投票,广告管理
        9.面向高级技术人员的自由化SQL扩展标签
        10.自动生成图片水印
        11.后台操作自由灵活
        12.其他一些功能...
  下载地址:http://www.foosun.net/

  12.动易? SiteFactory

  动易SiteFactory是一套基于微软 .NET 平台、采用最新的 ASP.NET 2.0技术、基于 WEB 应用的 B/S 架构分层开发的内容管理系统,专门面向需要构建企业信息门户平台的大中型企业而开发;具有强大的资讯信息管理功能、图片展示功能、人才招聘管理功能*、在线客户服系统*、问答系统、问卷调查管理、广告管理、手机短信发送、信息采集、自定义表单管理等系列功能,并且内置了包括文章、图片、软件、商品、flash、视频、音乐等在内的可开箱即用的标准化内容模型,以力助各中大型企业以最经济的成本和最便捷的方式构建起无限强大的企业信息门户!其中,人才招聘管理功能可助企业便捷进行在线人才招聘和管理;在线客户服务系统可助企业构建起强大的在线客户服务中心,以给客户提供更为专业的售后服务;多用户博客系统可供企业开设企业博客进行博客营销;而问答系统可助企业搭建起开放式的客服中心或行业垂直型的专业问答平台。

  在SiteFactory3.0版本中,系统又特别新增了全文检索系统*、多用户博客系统*、会员注册推广、模板标签库升级工具等系列功能,为企业信息门户在用户体验、网站互动、营销推广等方面进行了更好的完善和改进。全文检索系统可对企业网站大量的各类资讯文章进行高速的检索,多用户博客系统可供企业开设企业博客进行博客营销,而模板标签库升级工具可让企业网站在升级时轻松沿用原来的网站模板。

  下载地址:http://www.powereasy.net/

  13.拓文网站内容管理系统

   同时支持Access数据库和MS Sqlserver数据库,同时支持静态页面和动态页面。

  文章采集、会员管理、广告管理、软件下载,新闻文章,留言本,调查投票,友情链接,在线文件管理,公告发布,数据库管理。界面友好、功能完善、简单易用、管理方便。它能帮助您建立高效率的独立站点。 

  下载地址:http://www.mytopwin.com/

  国外CMS: 1、Ludico Ludico是 C#编写的居于ASP.NET 2.0的Portal/CMS系统。它的模块化设计是你可以按照你希望的使用或开发网站功能。它里面有高级的用户管理,一

  国外CMS:
  1、Ludico 

  Ludico是C#编写的居于ASP.NET 2.0的Portal/CMS系统。它的模块化设计是你可以按照你希望的使用或开发网站功能。它里面有高级的用户管理,一个所见即所的(WYSIWYG)的编辑器等。

  下载地址:http://sourceforge.net/projects/ludico

  2、umbraco

  Umbraco是一款在.net平台下C#开发的开源内容管理系统,该系统效率,灵活,用户界面都不错。

  下载地址:http://umbraco.org/

  3、mojoPortal

  mojoPortal是一款C#开发的面相对象网站框架,它可以运行于Windows的ASP.NET 和GNU/Linux 或Mac OS X的Mono的平台上。

  下载地址:http://www.mojoportal.com/

  4、Kodai CMS

  Kodai CMS是.NET平台下的一款功能齐全的内容管理系统。

  下载地址:http://www.gotdotnet.com/workspaces/workspace.aspx?id=070f30c3-6089-4a75-b84c-fac654a7ec08

  5、nkCMS

  NkCMS是使用ASP.net和Sql server 2000开发的内容管理系统。

  下载地址:http://nkcms.sourceforge.net/

  6、Go.Kryo

  Go.Kryo是一个用ASP.NET(C#).NET 实现的简单的内容管理系统,后台数据库使用Microsoft SQL Server 。

  下载地址:http://sourceforge.net/projects/gokryo

  7、Amplefile

  Amplefile是一款内容管理系统,是.Net环境下的windows应用程序,使用了.Net remoting.

  下载地址:http://sourceforge.net/projects/amplefile

  8、ndCMS

  ndCMS是 ASP.net (C#)下的一个内容管理系统。它提供了用户管理,文件管理,一个WYSIWYG编辑器,模板管理,拼写检查和内置的http压缩。ndCMS的目标是提供一个简单而快速的方式部署.Net站点

  下载地址:http://ndcms-net.sourceforge.net/

  9、Cuyahoga

  Cuyahoga是C#开发的灵活的CMS / Portal 解决方案。它可以运行于Microsoft .NET 和Mono 平台,支持SQL Server, PostgreSQL或MySQL作为底层数据库。

  下载地址:http://www.cuyahoga-project.org/

  10、Rainbow

  Rainbow项目是一款使用Microsoft's ASP.NET和C#技术开发的有丰富功能的开源内容管理系统。

  http://community.rainbowportal.net

nginx处理web请求分析

Nginx是什么?Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev在建立的项目时,使用基于BSD许可。

笔者的VPS使用的是nginx服务器,以前配置都是从网上拷贝过来的,一直一知半解,正好手头有VPS可以玩,趁这个机会认真学习下nginx的配置.下面的文章是讲nginx如何处理web请求(web request)过程的。

一、基于域名的虚拟服务器

nginx首先确定使用哪一个server域来处理请求,下面的例子中有3个虚拟服务器监听*:80端口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
server_name nginx.org www.nginx.org;
...
}
  
server {
listen 80;
server_name nginx.net www.nginx.net;
...
}
  
server {
listen 80;
server_name nginx.com www.nginx.com;
...
}

在上面的配置中,nignx根据HTTP请求“Host”的值,确定具体哪一个server接收web请求。如果“Host”不存在或者Host的值无法匹配任何sever中的$host_name,nginx就会把web请求送到默认的server中。如果没有定义default_server,默认将请求传递给第一个server。

1
2
3
4
5
server {
    listen       80  default_server;
    server_name  nginx.net  www.nginx.net;
    ...
}

参数“default_server” 是0.8.21后版本新增的内容. 此前的版本用“default”代替。
上面是针对web请求中包含“Host”值的情况,如果这个值不存在,那么可以使用下面的方法。

二、如何处理无server_name的请求?

1
2
3
4
5
6
server {
    listen       80  default_server;
    server_name  _;
    return       444;
   #所用"Host"为空的请求返回444响应。
}

三、处理基于IP和域名的虚拟主机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
    listen       192.168.1.1:80;
    server_name  nginx.org  www.nginx.org;
    ...
}
  
server {
    listen       192.168.1.1:80;
    server_name  nginx.net  www.nginx.net;
    ...
}
  
server {
    listen       192.168.1.2:80;
    server_name  nginx.com  www.nginx.com;
    ...
}

上面的配置中,nginx首先匹配IP地址和端口,然后在确定响应IP下的server_name,如果没有找到任何匹配的server_name,ngixn将请求传递给默认server。例如,当nginx收到来自 192.168.1.1:80 端口的请求www.nginx.com,
上例中没有定义默认server,那么这个请求将被传递到第一个server中。
nginx可以为不同的IP地址和端口定义多个默认server:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
    listen        192.168.1.1:80;
    server_name   nginx.org  www.nginx.org;
    ...
}
  
server {
    listen        192.168.1.1:80  default_server;
    server_name   nginx.net  www.nginx.net;
    ...
}
  
server {
    listen        192.168.1.2:80  default_server;
    server_name   nginx.com  www.nginx.com;
    ...
}

四、如何处理PHP请求

下面我们来看看nginx是如何确定web请求的location的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
    listen        80;
    server_name   nginx.org  www.nginx.org;
    root          /data/www;
  
    location / {
        index     index.html  index.php;
    }
  
    location ~* \.(gif|jpg|png)$ {
        expires   30d;
    }
  
    location ~ \.php$ {
        fastcgi_pass   localhost:9000;
        fastcgi_param  SCRIPT_FILENAME
                       $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

nginx会第一时间匹配定位符如”/”,如location / {…}。然后再依次包含匹配正则表达式的location,如果没有找到匹配的正则表达式,nginx会将请求重新定位到定位符”/”下。
个人理解:nginx会优先处理定位符"/"、"/images"这些location,其次才按顺序匹配包含正则的location。例如:"./logo.gif"的请求首先会匹配定位符"/",其次是通用表达式"\.(gif|jpg|png)$",因此它被第二个定位符所匹配.Nginx会使用指令"root /data/www"将请求映射到文件"/data/www/logo.gif",之后文件被返回给客户端。换言之,ngixn总是会把请求传递到最后一个匹配的location中。
需要注意到的是,ngixn处理的URI中不包含查询字符串(query string)部分,因为这些查询字符串的不确定因素太多,例如:

1
2
/index.php?user=john&page=1
/index.php?page=1&user=john

也可以这样写:

1
/index.php?page=1&something+else&user=john

最后看一下上面的例子中,nignx是如何处理的:

  1. “./logo.gif”的请求首先会匹配定位符”/”,其次是通用表达式”\.(gif|jpg|png)$”,因此它被第二个定位符所匹配.Nginx会使用指令”root /data/www”将请求映射到文件”/data/www/logo.gif”,之后文件被返回给客户端
  2. “/index.php”的请求也一样,首先匹配定位符”/”,其次是通常表达式”\.(php)$”.因而它由后者处理,请求被传递给在localhost:9000监听的FastCGI服务.”fastcgi_param”指令将FastCGI的参数SCRIPT_FILENAME设置为”/data/www/index.php”,再由FastCGI服务器执行该文件.变量$document_root的值与”root”指令的值是相等的,变量$fastcgi_script_name的值等于所请求的url,如”/index.php”等等
  3. 带”/about.html”的请求只匹配定位符”/”,因此它将在这个定位符中得到处理,由”root /data/www”指令将请求映射到”/data/www/about.html”,最后文件才被返回给客户端.
  4. 处理”/”这样的请求就更复杂了,因为只匹配”/”定位符所以只能在其中处理.”index”指令会根据它的参数及”root /data/www”指令,测试该目录下是否有默认文件存在.例如,如果存在”/data/www/index.php”文件,请求会被内部重定向到”/index.php”,然后Nginx会据此再进行一次定位符搜索,看起来就像是新接收到一个请求命令.一般而言,被重定向的请求最后会由FastCGI服务处理.

nginx设置SSL反向代理

Nginx的反向代理通常用来映射内网中提供的Apache、IIS、Lighttpd服务,以实现负载均衡;同时,由于动态服务程序运行在内网,服务器的整体安全性也有所提高,那么怎样用nginx设置SSL反向代理呢?

使用nginx设置SSL的优点不少:

  1. 易用性:nginx安装、升级简单,nginx的平滑升级使得网站服务器不需要重启就可以完成升级任务。
  2. 安全性:nginx对于代理是透明的,因此,相当于为放置在代理后的Apache等服务器提供一道安全屏障、可以抵御一些基本web的攻击。
  3. 低负载:负载低是nginx的另一大优点。可以在nginx代理后配置多个apache服务器以满足不同需求
  4. 缓存:可以将除动态文件以外的文件,如css、js、静态html页直接交给nginx处理,以进一步降低负载
  5. 文件压缩:nginx可以优化并减小文件传输尺寸,缩短文件读取时间。

说了一大堆优点,相信诸位看官该跃跃欲试了吧,闲话少提^_^,下面给出配置实例:

由于,下面的代码只是用来演示整个配置过程,因此,我使用的SSL安全证书是自己签名的,如果需要能够通过验证的SSL安全证书,请到CAs自我了断^_^(网站地址:www.verisign.com)。

一、生成SSL安全证书

在nginx的配置目录下新建一个文件夹用以存放证书

# cd /usr/local/nginx/conf
# mkdir ssl
# cd ssl

生成一个私有key

# openssl genrsa -des3 -out nixcraft.in.key 1024

点击查看原图

生成CSR(Certificate Signing Request)文件:

# openssl req -new -key nixcraft.in.key -out nixcraft.in.csr

点击查看原图

请输入自己的证书域名。上图红框的部分

二、配置SSL反向代理

编辑nginx的配置文件

#vi /usr/local/ngnix/conf/nginx.conf

添加如下代码:

server {
        ### server port and name ###
        listen          443 ssl;
        server_name     yourdomian.com;

        ### SSL log files ###
        access_log      logs/ssl-access.log;
        error_log       logs/ssl-error.log;

        ### SSL cert files ###
        ssl_certificate      ssl/yourdomain.com.crt;
        ssl_certificate_key  ssl/yourdomain.com.key;
        ### Add SSL specific settings here ###
        keepalive_timeout    60;

        ###  Limiting Ciphers ########################
        # Uncomment as per your setup
        #ssl_ciphers HIGH:!ADH;
        #ssl_perfer_server_ciphers on;
        #ssl_protocols SSLv3;
        ##############################################
        ### We want full access to SSL via backend ###
        location / {
                proxy_pass  http://yourdomain.com;
                ### force timeouts if one of backend is died ##
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

                ### Set headers ####
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                ### Most PHP, Python, Rails, Java App can use this header ###
                proxy_set_header X-Forwarded-Proto https;

                ### By default we don't want to redirect it ####
                proxy_redirect     off;
      }

保存、并重新加载配置文件

# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx -s reload

查看是否配置成功:

# netstat -tulpn | grep :443

SSL配置大功告成了,你可以使用https://youdomain.com访问你的网站了。

 

重定向端品丢失情况:

 

server {
        listen          80;
        server_name     yourdomain.com;


        location / {
                proxy_pass  http://yourdomain.com;
                ### force timeouts if one of backend is died ##
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

                ### Set headers ####
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                ### Most PHP, Python, Rails, Java App can use this header ###
                proxy_set_header X-Forwarded-Proto https;

                ### set server host
                proxy_set_header Host $host:$server_port;

                ### By default we don't want to redirect it ####
                proxy_redirect     off;
      }

Rewrite:

正则表达式匹配,其中:
* ~ 为区分大小写匹配
* ~* 为不区分大小写匹配
* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
文件及目录匹配,其中:
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行
flag标记有:
* last 相当于Apache里的[L]标记,表示完成rewrite
* break 终止匹配, 不再匹配后面的规则
* redirect 返回302临时重定向 地址栏会显示跳转后的地址
* permanent 返回301永久重定向 地址栏会显示跳转后的地址
一些可用的全局变量有,可以用做条件判断
$args, 请求中的参数;
$content_length, HTTP请求信息里的"Content-Length";
$content_type, 请求信息里的"Content-Type";
$document_root, 针对当前请求的根路径设置值;
$document_uri, 与$uri相同;
$host, 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名;
$limit_rate, 对连接速率的限制;
$request_method, 请求的方法,比如"GET"、"POST"等;
$remote_addr, 客户端地址;
$remote_port, 客户端端口号;
$remote_user, 客户端用户名,认证用;
$request_filename, 当前请求的文件路径名
$request_body_file
$request_uri, 请求的URI,带查询字符串;
$query_string, 与$args相同;
$scheme, 所用的协议,比如http或者是https,比如rewrite  ^(.+)$  $scheme://example.com$1  redirect;
$server_protocol, 请求的协议版本,"HTTP/1.0"或"HTTP/1.1";
$server_addr, 服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(造成资源浪费);
$server_name, 请求到达的服务器名;
$server_port, 请求到达的服务器端口号;
$uri, 请求的URI,可能和最初的值有不同,比如经过重定向之类的。

语法:rewrite regex replacement flag

按照相关的正则表达式与字符串修改URI,指令按照在配置文件中出现的顺序执行。
可以在重写指令后面添加标记。
如果替换的字符串以http://开头,请求将被重定向,并且不再执行多余的rewrite指令。
尾部的标记(flag)可以是以下的值:

  • last - 完成重写指令,之后搜索相应的URI或location。
  • break - 完成重写指令。
  • redirect - 返回302临时重定向,如果替换字段用http://开头则被使用。
  • permanent - 返回301永久重定向。

...

 

 

 

兼容性好,自动置顶的淘宝悬浮工具栏,DIV绝对置顶(兼容IE,FF)

对于IE7,我们可以利用DIV的"position: fixed;"属性。代码如下:

#ie7_ff{
       position: fixed;
       top: 0px;
       left: 0px;
       width: 120px;
}

这段代码对于Firefox浏览器同样适用。但是IE6不支持“position: fixed;”属性。所以针对IE6我们可以用如下代码:

#ie6_ie7{
       position: absolute;
       width: 120px;
       left: 140px;
       top: expression(eval(document.documentElement.scrollTop));
}

这段代码对于IE7同样适用。但是FF不支持。

利用浏览器HACK技巧,我们就可以写出兼容IE6,IE7,FF的CSS代码:

#all_f1{
       width: 150px;
       position: fixed;       //IE7,FF
       _position: absolute;        //IE6
       left: 280px;
       top: 0px;
       _top: expression(eval(document.documentElement.scrollTop));    //IE6
#all_f2{
       width: 150px;
       position: fixed;       //FF
       *position: absolute;        //IE6,IE7
       left: 450px;
       top: 0px;
       *top: expression(eval(document.documentElement.scrollTop));   // IE6,IE7
 

----------------------------------------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="http://www.w3.org/1999/xhtml
">
<head>
<title>兼容IE6的淘宝悬浮工具栏</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
#float{width:744px;height:34px;border:1px solid #C0DBF8;position:absolute;top:0}
#box{position:relative;height:600px;}
</style>
</head>
<body>
<div style="height:300px;background:#eee"></div>
<div id="box"><div id="float" >ddd</div></div>
<div style="height:1000px;background:#eee"></div>
</body>
<script type="text/javascript">
var IO=document.getElementById('float'),Y=IO,H=0,IE6;
IE6=window.ActiveXObject&&!window.XMLHttpRequest;
while(Y){H+=Y.offsetTop;Y=Y.offsetParent};
if(IE6)
    IO.style.cssText="position:absolute;top:expression(this.fix?(document"+
        ".documentElement.scrollTop-(this.javascript||"+H+")):0)";
window.onscroll=function (){
    var d=document,s=Math.max(d.documentElement.scrollTop,document.body.scrollTop);
    if(s>H&&IO.fix||s<=H&&!IO.fix)return;
    if(!IE6)IO.style.position=IO.fix?"":"fixed";       
    IO.fix=!IO.fix;
};
try{document.execCommand("BackgroundImageCache",false,true)}catch(e){};
//]]>
</script>
</html> 

SQL里面随机选择数据行

SELECT TOP 10 OrderID, NewID() as Random
FROM Orders
ORDER BY Random  

关键在于NewID()这个函数,他生成一个随机数。

随机提取10条记录的例子:
SQL Server:

Select Top 10 * From 表 Order By NewID()

Access:

Select Top 10 * From 表 Order By Rnd(ID)  

 Random rnd = new Random(unchecked((int)DateTime.Now.Ticks));
 int intRandomNumber = rnd.Next();
Rnd(ID) 其中的ID是自动编号字段,可以利用其他任何数值来完成,比如用姓名字段(UserName)
Select Top 10 * From 表 Order BY Rnd(Len(UserName))

MySql:

Select * From 表 Order By Rand() Limit 10

SQL语句真是博大精深阿~

JW FLV Player

一、JW Player是什么?

简单地说,JW Player是一种基于flash的交互式网页媒体播放器。它是由Jeroen 和 Wijering共同建立的LongTail Video所开发,问世于2005年,当时仍名不经传的YouTube首次采用的播放器就是JW Player。官方网址:http://www.longtailvideo.com/

JW Player含:FLV Player、WMV Player、Image Rotator和Desktop Player四种,除了最后一种实为桌面播放器,其他三种都是网页播放器。本篇内容仅限FLV Player。

二、JW FLV Media Player简介

JW FLV Media Player可播放Adobe Flash Player所支持的媒体,具体包括:FLV、MP4、MP3、AAC、JPG、PNG和GIF等,还支持RTMP、HTTP、实时视频流、各种播放清单格式、灵活的设置和广泛的javascript API。此外它还提供多种外观、功能性插件来扩展播放器,以便我们可以分享、推荐、搜索、分析甚至广告投放。

目前(2009-10-20)最新的版本是4.6版。

三、安装

JW Player可安装在网络空间,我从未如此运用过,而是上传到我的网盘,因此本篇的介绍也是基于此种情况,而列为看官当然懂得如何触类旁通。另外,我们一定要选择可以直链的网盘上传,何谓“直链”,即外链地址以完整的文件名为结尾(含.后缀名),如http://www.xxx.com/xxx.mp3

1、首先到官网下载源文件,下载地址:http://www.longtailvideo.com/players/jw-flv-player/


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

下载来的文件是zip压缩包,解压之后可以看到内含以下文件:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

2、将player.swf和swfobject.js这两个文件上传到网盘(建议在网盘上为它们单独建立一个文件夹,本篇示例文件夹JW Player),安装即告完毕,就这么简单!

四、使用设置向导

官网特别提供一个设置页面http://www.longtailvideo.com/support/jw-player-setup-wizard
,可以在网页上提交、设置播放器参数,生成嵌入代码,把生成的代码稍作修正后粘贴到博客或空间即可。

设置向导提供两种代码:默认的Swfobject 1.5 Code(即JavaScripting)和Embed Code。我没有机会运用Swfobject 1.5 Code,因此本篇只介绍Embed Code。



前面我提到过生成的代码要稍作修正:为了方便在网页小窗口浏览生成的代码,官网给出的代码是按各项参数分行了的,如果复制后就直接粘贴,可能会使播放器不能正常工作,我建议先把代码复制到“记事本”后,删除段落标记,注意每项参数之间还要保留一个空格位,再复制到空间或博客。

Embed 代码的格式一般是这样:
<embed
参数
1=”
参数值

参数
2=”
参数值

……
参数
n=”
参数值
”></embed>。

关于Embed Code各项参数的详细介绍,请参阅Adobe官网:http://kb2.adobe.com/cps/127/tn_12701.html
。这个话题不小,值得另开一篇介绍文章。

1、设置向导概览

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

(点击打开大图)

JW Player设置非常灵活,代价就是参数非常多,搞清楚参数的意义很重要,官网也提供相关资料供我们查阅:http://developer.longtailvideo.com/trac

特别注意:
如果你的网址参数值带有“?”、“=”和“&”这三个字符,必须先转换再填写,如下:


?
”转换为“
%3F



=

转换为“
%3D



&

转换为“
%26

例如:原网址为:
getplaylist.php?
id=
123&
type=
flv

,转换后为:
getplaylist.php%3F
id%3D
123%26
type%3D
flv

2、选择模板

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

官网为我们提供了多达21种模板,每选择一种模板,下面的参数值和播放器预览将自动更新。虽然大部分模板今后我们恐怕几乎用不上,我还是建议新手一定要把每一种模板都点击一下,再好好体会下面的参数值,这既有助于我们领会众多参数所代表的含义,还可以在播放器预览直接看到参数所体现的效果。

模板其实就是一件半成品,熟悉模板还可以让我们快速而准确地挑选最接近成品的模板,善用模板将大大提高效率。

需要多费口舌的是带播放清单模板“flvplayer with an rss playlist”,这个留待后面谈flie参数时再详细介绍。

3、嵌入参数

嵌入参数有三个内容:

*swf来源:填写我们之前上传到网盘player.swf的直链地址
*播放器高度:填写pix(像素)值或浏览窗口百分比
*播放器宽度:填写pix(像素)值或浏览窗口百分比


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

如果高度和宽度填写的是百分比,那么播放器的大小是弹性的,它将随浏览器窗口和所在网页留给播放器窗口的大小而变化。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

4、媒体文件属性参数

*媒体作者:填写媒体作者名字
*媒体描述:媒体的文字描述
*字幕:XML字幕文件的链接地址(XML字幕文件也是一个大话题,将另文介绍)
*持续时间:媒体播放的持续时间(秒)
*媒体文件:媒体文件或XML播放清单的链接地址

关于JW Player可支持的媒体格式详情,请参阅:http://developer.longtailvideo.com/trac/wiki/FlashFormats
。大致分类:单文件媒体(视频:FLV、MP4和AAC音频;音频;MP3;图像:JPG、GIF和PNG),YouTube视频,Livestream.com视频,HTTP流媒体,RTMP流媒体,XML播放清单。

我们要面对的模板其实可以归于两大类:一是播放单文件媒体;二是播放多文件媒体。单文件媒体好办,直接在参数file告诉播放器媒体文件的所在地址既可。如果要播放多文件媒体,那就要把所有媒体文件按顺序组织起来,并保存为XML文件(可以用“记事本”打开和编辑) ,这就是XML播放清单,而file参数就填上这个XML文件的链接地址。JW Player支持的播放清单格式有:XSPF、RSS(itunes、media)、ASX、ATOM。

关于XML播放清单见我的另一篇介绍文章《JW Player之XML播放清单简介》

请注意,
JW Player是以文件后缀名来判断媒体类别,如果播放器没有找到合适的后缀名,它将假定载入的是播放清单。

*预览图像:预览图片的链接地址

何谓“预览图像”?当播放器停止播放时,它显示的图像。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

外部链接地址:当填写此项参数值后,播放器的控制面板将多出一个链接按钮,点击可以打开外部链接网页。请看截图:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*开始时间:定位从第几秒开始播发,仅对HTTP / RTMP流媒体有效。
*媒体标题:如果你将播放器设置成带播放清单(Playlist),媒体标题将出现在播放清单。


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*媒体类别:一般来说JW Player可以根据媒体文件后缀名自动判断媒体类别,如果没有后缀名,或者媒体来自流媒体服务器,你可以手动设置媒体类别。可选择的参数如下:

video: FLV / MP4视频,也适用于 AAC 音频
sound: MP3
image: JPG/GIF/PNG 图像
youtube: 来自YouTube的视频
http: 来自HTTP服务器的FLV/MP4 流媒体
rtmp: 来自RTMP服务器的FLV/MP4/MP3流媒体

5、播放器颜色参数

* backcolor:控制面板和播放清单的背景颜色(默认为白色)
* frontcolor:控制面板和播放清单所有图标和文字颜色
* lightcolor:鼠标悬停于播放清单时,图标和文字显示颜色
* screencolor:播放屏幕的背景颜色

以上颜色参数应填写16进制网页颜色值,关于16进制网页颜色,请参阅:

http://en.wikipedia.org/wiki/Web_colours

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

6、播放器布局参数

*controlbar:控制面板放置位置:底部bottomd(默认)、覆盖over、无none。如果选择覆盖,只有鼠标悬停于播放屏幕,或者停止播放时,才会出现控制面板,此时控制面板出现于播放屏幕的底部。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*logo:填写logo图片(JPG/PNG/GIF)的直链地址。当采用默认皮肤时,Logo图像会显示于屏幕的右上角。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*playlist:播放清单放置位置:无none(默认)、底部bottom、覆盖over、右边right、左边left、顶部top。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*playlistsize:填写播放清单显示尺寸,默认180pix。当播放清单置于底部或顶部时,该值代表高度;当播放清单置于左边或右边时,该值代表宽度;当播放清单置于覆盖时,播放清单将在停止播放时才出现,并覆盖全部播放屏幕,且不受该值影响。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*dock:默认不显示dock。这个我确实不知道如何翻译,用过苹果操作系统的朋友应该知道那是什么。JW Player 4.5版以后支持dock。dock实际上就是某些插件(plugins)以图标的形式显示于屏幕的右侧,从上往下排列,具体哪些插件(例如:语音解说audiodescription,字幕caption等插件)支持dock,我尚不清楚。请看截图吧:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*skin:填写皮肤swf文件的直链地址。JW Player的皮肤插件也是swf文件,官网提供不少现成的皮肤插件,详见:http://www.longtailvideo.com/addons/skins
。在你运用皮肤插件之前,要先将你需要的皮肤插件下载到本地再上传到网盘。用户还可以自己设计自己的皮肤插件,参见:http://developer.longtailvideo.com/trac/wiki/FlashSkinning
http://developer.longtailvideo.com/trac/wiki/SkinningThePlayer


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

请你们特别注意
,不同的皮肤,其播放清单显示的具体内容会有所增减。

7、播放器行为参数

*autostart:自动播放,默认无false。
*bufferlength:缓冲时长(秒),默认1秒。设置开始播放前预先缓冲的时长,设置时长短可以及时播放,设置时长长则可以减少中断。
*displayclick:点击动作,默认为播放play。设置点击屏幕时播放器的行为:播放(默认)play,链接link,切换到全屏fullscreen,无任何行为none,静音mute,下一个曲目next。当选择“无任何行为none”时,鼠标点击手势不会出现于屏幕。


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*icons:缓冲图标,默认显示true。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*item:开始播放曲目,默认为0。注意:JW Player认为播放清单第一个曲目的顺序号为“0”。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*mute:以静音开始,默认无false。该选择将会保存在浏览器的cookie。
*quality:回放品质,默认高品质true。
*repeat:重复方式,默认无none。list:播放清单的所有曲目都完整播放一遍。always:重复循环播放。
*shuffle:乱序播放,默认无false。设置是否按播放清单的顺序播放,或者乱序播放。
*stretching:图片延展方式。none:不延展;exactfit:不锁定高宽比填满屏幕;fill:锁定高宽比填满屏幕;默认uniform:锁定高宽比,以黑色填充空白部分。


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*volume:音量值,默认90。参数可以填写0-100之间的整数值,并将存放在浏览器的cookie。

8、外部通讯参数

*linktarget:链接目标。当我们在“媒体文件属性 — 外部链接地址”参数里填写了外部链接地址之后,这个参数就用于设置外部链接打开的方式:默认“_blank”,即在新窗口打开链接,或者“_self”,即在原窗口打开链接。

*plugins:插件,插件是播放器的扩展,使播放器具有更多的外观和功能,官方提供的插件详见:http://www.longtailvideo.com/AddOns/
。官方把所有插件分为三类:皮肤skin、插件plugins和组件modules。皮肤插件我之前已有介绍,它们实际上是swf文件,使用前要先上传到网络空间或网盘,运用皮肤插件也不在此设置,而是在皮肤“skin”参数中设置。组件modules本篇亦不打算涉及。那么以我的理解,在此的plugins应该是功能性的插件。

需要注意的是某些plugins是需要付费购买的,比如广告plugins “Adtonomy Text Ads (Run Your Own Ads)”:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

如果是免费plugins,一般会给出参数值,直接填写就可以加载了。以字幕plugins “captions”为例:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

要加载多个plugins,请在参数值之间用英文的逗号“,”隔开,如图:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*streamer:rtmp/http流媒体,填写rtmp/http流媒体服务器地址,可以是RTMP应用程序,也可以是外部PHP/ASP文件,详见:http://developer.longtailvideo.com/trac/wiki/FlashFormats

9、预览你的播放器

当需要填写的参数都填写完之后,请点击“更新预览和代码(Update Preview & Code)”,其下的“预览你的播放器(Preview Your Player)”和“复制你的代码(Copy Your Code)” 将根据你的参数而改变,你可以实时看到效果。



JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

10、复制你的代码

在前面我曾经提到:为了方便在网页小窗口浏览生成的代码,设置向导给出的代码是按各项参数分行了的,如果复制后就直接粘贴,可能会使播放器不能正常工作,我建议先把代码复制到“记事本”后,删除段落标记,注意每项参数之间还要保留一个空格位,再复制到空间或博客。

仔细观察设置向导给出的Embeded代码,它们大致可以分为以下几项:

*src:(已介绍)
*width:(已介绍)
*height:(已介绍)
*allowscriptaccess:这是Adobe Falsh Player 6.0以后开始支持的参数。这个参数是控制在HTML网页中,swf的ActionScript是否允许调取JavaScript,它有三个选项:

·总是允许always:默认值,一般保持默认即可。
·只允许同域名sameDomain:仅当SWF文件与HTML网页来自同一域名时才允许调取。
·不允许never。

*allowfullscreen:是否允许切换到全屏,默认是允许true。
*flashvars:即flash变量。我们可以发现绝大部分用户对JW Player的个性定制都体现在这里,定制得越具体,这个参数包含的内容就越复杂。

我们可以看到,设置向导给出参数的格式是这样的:

flashvars='
变量
1=
变量值
&
变量
2=
变量值
&
变量
3=
变量值
&
……变量
n=
变量值
'

我建议把“
&
”改为“
&amp;
”!

修改之后就是这样:

flashvars='
变量
1=
变量值
&amp;
变量
2=
变量值
&amp;
变量
3=
变量值
&amp;
……变量
n=
变量值
'

如果你嫌处理Embeded代码这么麻烦,那么我介绍一个更方便的方法:请用浏览器打开这个网页:http://ckeditor.com/demo
,并点击左上角的“源码”按钮:


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

全选框内的文本并删除:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

将设置向导给出的Embeded代码复制进来,再次点击左上角的“源码”按钮:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

点击之后是这样:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

再点击一次左上角的“源码”按钮,此时框内的代码已被修正了:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

五、补充说明

1、如果要商业性地使用JW Player,必须向官方购买许可,比如:

*带广告的站点
*由商业机构拥有或运营的站点
*用于产品推广的站点
*提供捆绑有LongTail产品的产品

具体参见:https://www.longtailvideo.com/players/order


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

2、限于Adobe Falsh Player的安全措施,JW Player不允许加载来自不同域名的播放清单文件、swf文件(例如皮肤插件)和ID3等数据。但是可以通过在网站放置crossdomain.xml文件来迂回地解决,详见:http://developer.longtailvideo.com/trac/wiki/FlashSecurity
http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html

如果要播放的媒体文件的域名与swf文件、播放清单文件的域名不一致,插件无法加载。

3、虽然官网LongTail提供有很多现成的皮肤Skin及插件Plugins,但是用户还是可以自己设计自己的皮肤及开发自己的插件,JW Player自定义的弹性算是空前的,有兴趣的朋友可以参见:http://developer.longtailvideo.com/trac/wiki/SkinningThePlayer
http://developer.longtailvideo.com/trac/wiki/PluginsBuilding

4、更正一点:JW FLV Player支持XML和SRT两种字幕文件。



1、限于本人的水平和精力,本篇仅仅是对JW FLV Player非常粗浅的介绍,例如皮肤设计、plugins的开发、API Calls、RTMP/HTTP Streaming、Crossdomain security以及JW Player家族中其他在线播放器如:WMV Player、Image Rotator等都没有涉及。

2、本篇介绍如与LongTailVideo官网有不一致之处,以官网为准。

3、虽然本篇介绍是应老胡
的请求而写的,其实最大的受益者却是本人。为了完成这篇介绍文章,促使本人更深入地去学习这款非常值得研究的播放器,孔子说:“学而时习之,不亦悦乎?”自己亲身实践带来的快感远远不是由别人灌输给你的所能比拟的!

4、近一段时间我还特别去学习了字幕插件,在介绍XML播放清单
之后,我会把我学习字幕插件的心得分享给你们。在介绍字幕插件时,我将会涉及插件如何再附加其他参数,还会提到dock,因为碰巧字幕插件支持dock。同样的,当我搞清楚JW FLV Player的字幕插件之后,那种喜悦也是难以言表。









IIS7 Discuz! X1伪静态设置方法

IIS7官方: http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

微软在IIS7中添加了URL的重写模块,并且免费使用,可以导入.htaccess规则,确实是个不错的选择

URL Rewrite Module

URL Rewrite Module是一个基于规则的URL重写引擎,用于在URL被Web服务器处理之前改变请求的URL。对于动态Web应用程序,它可以为用户和搜索引擎提供友好的URL,URL重写和重定向是基于HTTP头和服务器变量的,并可以对站点内容进行访问控制。

iis 7的主机才支持伪静态模块.

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name=”topic”>
                    <match url=”^topic-(.+)\.html$” />
                    <action type=”Rewrite” url=”portal.php?mod=topic&amp;topic={R:1}” />
                </rule>
                <rule name=”article”>
                    <match url=”article-([0-9]+)\.html$” />
                    <action type=”Rewrite” url=”portal.php?mod=view&amp;aid={R:1}” />
                </rule>
                <rule name=”forum”>
                    <match url=”^forum-([0-9]+)-([0-9]+)\.html$” ignoreCase=”false” />
                    <action type=”Rewrite” url=”forum.php?mod=forumdisplay&amp;fid={R:1}&amp;page={R:2}” appendQueryString=”false” />
                </rule>
                <rule name=”thread”>
                    <match url=”^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$” />
                    <action type=”Rewrite” url=”forum.php?mod=viewthread&amp;tid={R:1}&amp;extra=page={R:2}&amp;page={R:3}” />
                </rule>
                <rule name=”group”>
                    <match url=”^group-([0-9]+)-([0-9]+)\.html$” />
                    <action type=”Rewrite” url=”forum.php?mod=group&amp;fid={R:1}&amp;page={R:2}” />
                </rule>
                <rule name=”space”>
                    <match url=”^space-(username|uid)-(.+)\.html$” />
                    <action type=”Rewrite” url=”home.php?mod=space&amp;{R:1}={R:2}” />
                </rule>
                <rule name=”Xrewrite”>
                    <match url=”^([a-z]+)-(.+)\.html$” />
                    <action type=”Rewrite” url=”{R:1}.php?rewrite={R:2}” />
                </rule>
            </rules>
        </rewrite>
  <httpErrors errorMode=”Detailed” />
  <asp scriptErrorSentToBrowser=”true” />
  </system.webServer>
<system.web>
<customErrors mode=”Off” />
<globalization requestEncoding=”utf-8″ responseEncoding=”utf-8″ fileEncoding=”utf-8″ />
</system.web>
</configuration>

------------------------------------------------------------------

index301.htaccess 必须写到.htaccess后缀的文件里,
1.在iis7的URL Rewrite中右侧点击Import Rules导入.htaccess文件

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^henghengw.com$ [NC]
RewriteRule ^(.*)$ http://www.henghengw.com/$1
[R=301,L]
</IfModule>

其实应该也可以试试直接在web.config里写规则

<rule name="index301" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_HOST}" pattern="^henghengw.com$" />
          </conditions>
          <action type="Redirect" url="http://www.henghengw.com/{R:1
}" redirectType="Permanent" />
        </rule>
 
 

最新优惠25%的godaddy优惠码,ixwebhosting优惠码,godaddy最新优惠码

Godaddy默认为购买亚太机房主机(Fast Asia Pacific-based servers),国内访问速度慢,记得要购买美国机房的主机。
美国机房(Our World-Class Data Center)购买链接入口:
欧洲机房(Fast European-based servers)购买链接入口:
亚太机房主机(Fast Asia Pacific-based servers)购买链接入口:
 
------------------------------------------------
GoDaddy ssl证书设置教程 
-------------------------------------------------

1 购买所有虚拟主机产品优惠20%    cjcshare20
2 购买100美元及以上优惠20美元     cjc20hun
3 购买30美元及以上优惠5美元     cjcsave
4 购买75美元以上优惠15%     cjcdeal
5 $7.49 .COM 注册,续费,转移     cjc695dom
6 $7.49 .org 注册,续费,转移     cjctld749
7 $7.49 .net 注册,续费,转移     cjctld749
8 购买VPS优惠20%     cjcvps20
9 购买独立主机优惠20%     cjcded20
-------------------------------------------------

 1.Godaddy主机优惠码(通用)

优惠券: cjchost20
购买所有主机产品优惠20%. (独立主机例外)
有效期: 无限制

优惠券: cjcrebone
价格减$1元

优惠码: cjctenoff
购买50美元及以上商品使用此优惠码可以优惠10美元
有效期:无限制

优惠码: cjcsave
购买30美元及以上商品使用此优惠码可以优惠 5 美元
有效期:无限制

优惠码:cjcdeal 购买75美元以上优惠15%

优惠码:cjcVDHALF 购买Virtual Dedicated Hosting 主机一年或一年以上者,优惠50%。

优惠码: cjcfat75 消费75美金或以上者,优惠15%。

优惠码: cjc4U75 消费75美金或以上者,优惠15%。

2.Godaddy域名注册优惠码

优惠码: cjc695dom
说明: $7.45 .COM 注册,续费,转移

优惠码:cjc4Udom 域名注册 $7.49

优惠码:cjcdollar 优惠一美元,域名续费和org域名注册除外。

SSL证书

       cjcssl12t2 : 12.99美元每年