Apr
23
以前听人说在Linux上可以查到一个很奇怪的月份,只是当时忘了那个特殊的月份。今天在网上搜了一下,发现通过这个命令(月份)了解了一段人类文明历 史。呵呵。虽然和Linux没什么关系,但是确实是因为Linux才让我了解到的。
# cal 9 1752
September 1752
S M Tu W Th F S
1 2 14 15 16
1 7 18 19 20 21 22 23
2 4 25 26 27 28 29 30
我们发现1752年9月2日的后面竟然是14日,确实很奇怪,通过在网上搜索,找到 了答案:
1582年2月,罗马教廷要求从1582 年10月中减去10天,因此1852 年10月4日后面紧跟着就是15日。 在意大利、西班牙等国家都这样处理了。其他天主教国家也很快跟着这么做了,但是新教国家不愿意修改, 而且希腊等东正教国家直到20世纪初才修改,所以这个改革在英国及其殖民地(包括美国)在1752年9月才被执行。这样 1752 年9月2日后面跟着的就是1752 年9月14日。 这就是为什么cal会生成上面输出的原因了。
Windows用户是没福气查到这个 特殊月份了,因为Windows的纪年范围只是1980-2099。
# cal 9 1752
September 1752
S M Tu W Th F S
1 2 14 15 16
1 7 18 19 20 21 22 23
2 4 25 26 27 28 29 30
我们发现1752年9月2日的后面竟然是14日,确实很奇怪,通过在网上搜索,找到 了答案:
1582年2月,罗马教廷要求从1582 年10月中减去10天,因此1852 年10月4日后面紧跟着就是15日。 在意大利、西班牙等国家都这样处理了。其他天主教国家也很快跟着这么做了,但是新教国家不愿意修改, 而且希腊等东正教国家直到20世纪初才修改,所以这个改革在英国及其殖民地(包括美国)在1752年9月才被执行。这样 1752 年9月2日后面跟着的就是1752 年9月14日。 这就是为什么cal会生成上面输出的原因了。
Windows用户是没福气查到这个 特殊月份了,因为Windows的纪年范围只是1980-2099。
Apr
23
微软公司无疑是世界上聪明人云集的地方,比尔·盖茨靠什么对这些员工进行有效的管理呢?答案是:微软公司的人格化管理。特别是其中无等级的安排让许多其他公司的员工欣赏。等级隔阂是人与人之间关系难以融洽的一大原因,这种在不同等级间形成的思想隔阂是很难消除的。它的存在妨碍了人们间的相互沟通,不利于企业职工凝聚力的增强,为共同的事业齐心努力。因此,在管理工作中,应尽可能地消除由此产生的影响。微软公司在内部人员关系的处理上正是这样做的。
平等的办公室。只要是微软公司的职工,都有自己的办公室或房间。每个办公室都是相对隔开的,有自己的门和可以眺望外面的窗户;每个办公室的面积大小都差不多,即使董事长比尔·盖茨的办公室也比别人大不了多少。对自己的办公室,每个人享有绝对的自主权,可以自己装饰和布置,任何人都无权干涉。至于办公室的位置也不是上面硬性安排的,而是由职工自己挑选的,如果某一办公室有几个人选择,可通过抽签决定。另外,如果谁对第一次选择不满意,可以下次再选,直到满意为止。公司为充分尊重每个人的隐私权,每个办公室都安装了可随手关闭的门。微软公司的这种做法与其他公司不同,它使职工们感到很有意思,而且工作起来心情舒畅。
无等级划分的停车场。在微软公司,各办公楼前都有停车场,这些停车场是没什么等级划分的,不管是比尔·盖茨还是一般职工,谁先来谁就先选择地方停车,没有职位高低之分。但是,即使如此,比尔·盖茨也从未因找不到停车的地方而苦恼过,因为每天他比任何人来得都早。
没有时钟的办公大楼也是微软公司与众不同的一个特点。微软西雅图市总部办公大楼是用简易的方法建造的,主要材料是玻璃和钢材。办公大楼的地面上铺着地毯,房顶上散发着柔和的灯光,但让人奇怪的是整座办公大楼内看不到一个钟表,大家凭良心上下班,加班多少也是自愿的。美国西雅图市的天气是阴多晴少。只要一出太阳且风和日丽,员工们可自由自在地在外面散心。
办公楼内到处可见高脚凳。微软公司除为职工免费提供各种饮料之外,在公司内部,可用于办公的高脚凳到处可见,其目的在于方便公司职工不拘形式地在任何地点办公。当然,这种考虑也离不开软件产品开发行业的生产特点。
微软公司就是靠别出心裁的人格化管理,吸引了一大批富有创造力的人才到微软公司工作,并通过营造独特的文化氛围,使这些人才心甘情愿地留在微软。
平等的办公室。只要是微软公司的职工,都有自己的办公室或房间。每个办公室都是相对隔开的,有自己的门和可以眺望外面的窗户;每个办公室的面积大小都差不多,即使董事长比尔·盖茨的办公室也比别人大不了多少。对自己的办公室,每个人享有绝对的自主权,可以自己装饰和布置,任何人都无权干涉。至于办公室的位置也不是上面硬性安排的,而是由职工自己挑选的,如果某一办公室有几个人选择,可通过抽签决定。另外,如果谁对第一次选择不满意,可以下次再选,直到满意为止。公司为充分尊重每个人的隐私权,每个办公室都安装了可随手关闭的门。微软公司的这种做法与其他公司不同,它使职工们感到很有意思,而且工作起来心情舒畅。
无等级划分的停车场。在微软公司,各办公楼前都有停车场,这些停车场是没什么等级划分的,不管是比尔·盖茨还是一般职工,谁先来谁就先选择地方停车,没有职位高低之分。但是,即使如此,比尔·盖茨也从未因找不到停车的地方而苦恼过,因为每天他比任何人来得都早。
没有时钟的办公大楼也是微软公司与众不同的一个特点。微软西雅图市总部办公大楼是用简易的方法建造的,主要材料是玻璃和钢材。办公大楼的地面上铺着地毯,房顶上散发着柔和的灯光,但让人奇怪的是整座办公大楼内看不到一个钟表,大家凭良心上下班,加班多少也是自愿的。美国西雅图市的天气是阴多晴少。只要一出太阳且风和日丽,员工们可自由自在地在外面散心。
办公楼内到处可见高脚凳。微软公司除为职工免费提供各种饮料之外,在公司内部,可用于办公的高脚凳到处可见,其目的在于方便公司职工不拘形式地在任何地点办公。当然,这种考虑也离不开软件产品开发行业的生产特点。
微软公司就是靠别出心裁的人格化管理,吸引了一大批富有创造力的人才到微软公司工作,并通过营造独特的文化氛围,使这些人才心甘情愿地留在微软。
Apr
22
Hyper-V中的I/O架构
该架构极大地减少发送I/O请求所需的开销。如果Virtual Server用户把虚机迁移到Hyper-V中,能体会到高I/O的工作负载的CPU开销大大降低。
在虚拟化领域,微软是继VMware后最大的竞争者,它的出场引发了一个讨论:Hyper-V是否会超越VMware ESX Server成为主导的hypervisor。VMware与微软及其余竞争者之间的争论是一场热烈的战争,让想人起了Windows与Mac OS之间的战争。
VMware对 Hyper-V的看法
对于微软这样庞大的但在虚拟化领域的后来者,VMware方面认为,VMware是最有经验的公司。VMware有10年的虚拟化经验和一个庞大的用户基础,包括100%的财富500强公司和92%的财富1000强公司,全球总共有超过10万的用户。VMware还拥有11个虚拟化专利权,在2007年,VMware的收入达到了13.3亿美元。
拥有新虚拟化产品的微软几乎没有企业虚拟化经验,到目前为止,还没有财富500强的用户在生产环境里采用微软的企业虚拟化产品。哪个公司听起来更能胜任提供你企业的虚拟化解决方案?
据称ESX已经有过运行1000多天而没有一次重启的记录;而由于Windows更新,Windows Server 2008 Hyper-V需要,每三十天重启一次。总而言之,如果你仅仅看到一个单独的VMware Infrastructure企业套件许可证要花费6950美元,相比一个单独的Windows Server 2008企业或标准的套件许可证来说,毫无疑问,VMware解决方案花费更多。然而,就性能而言,VMware仍然比微软的Hyper-V胜出一筹。
微软是毫不示弱给予回击
Microsoft Hyper-V 和VMware ESX Server都是基于硬件支持的Bare-Metal虚拟化产品,他们最大的区别在于,Microsoft Hyper-V采用了微内核的结构,而ESX Server是一个单内核的产品。
单内核的主要特点是硬件的驱动程序集中在Hypervisor一层,被Hypervisor上的所有的虚机所共同使用。当一个虚机的OS需要访问硬件时,它通过Hypervisor中的driver model来访问,这种单内核的Hypervisor能够提供很好的性能,但是它在安全性和兼容性上存在缺陷。由于驱动程序和一些第三方代码跑在一个很敏感的区域内,这种模式有了一个很大的被攻击面。
设想下某些不怀好意的代码被隐藏在驱动程序当中,然后跑在Hypervisor中,这会影响到所有的客户虚拟机,而且这是很难被发现的,因为对于实际被使用的虚机来说,Hypervisor这层是不可见的,所以无法通过一些病毒软件去监控它。 另外一个问题就是稳定性,假设某个驱动程序当中存在bug,那么它将影响到所有的虚机。另外你还要求Hypervisor去支持所有的驱动程序,造成了这层体积较为庞大。所以单内核的Hypervisor一般被认为是胖Hypervisor。
而Hyper-V采用了微内核的结构,它是一个瘦Hypervisor。因为它里面没有驱动程序,所以在体积上Hyper-V更有优势,另外,由于微内核体积较小,所以运行的效率很高。驱动程序是跑在每一个分区里面的,每一个分区内的虚机OS都能够通过Hypervisor直接访问硬件,还使得每一个分区都相互独立,这样就拥有更好的安全性和稳定性。
除此之外,大多数虚拟化解决方案都是采用了硬件模拟来解决硬件访问的兼容性问题,但是也造成了很大的开销和性能损失。而微软的Hyper-V没有采用这样的做法,而是采用了Enlightenment(启蒙)技术。它能够对那些虚拟机操作系统进行启蒙,让它们明白自己是一个虚拟机,被启蒙过的虚拟机操作系统会记住虚拟化,所以他们可以不需要硬件模拟,而是通过VSP/VSC这套组件来进行的,当子分区内的操作系统需要访问硬件的时候,由子分区内的VSC(Virtualization Service Client)通过VMBUS将request发给父分区里面的VSP(Virtualization Service Provider),然后由VSP去提供实际的硬件服务。通过这种方式来使用硬件,相对于使用硬件模拟的方法,其访问性能有了大幅度的提高。
另外这种方式可以兼容大量的驱动程序,而不必像ESX Server一样为虚拟机开发专用的驱动程序。在大多数情况下,只要硬件设备能够在Windows Server 2008下工作,那么就肯定能够在虚拟机下工作。再加上Windows平台的驱动本来就比其他平台的驱动程序丰富,而ESX Server容易遇到兼容性方面的问题,所以在硬件兼容性支持上Hyper-V具有无可比拟的优势。
经过这几年的努力,微软为虚拟化技术提供了非常丰富和全面的产品线,从服务器虚拟化的Virtual Server, Hyper-V,到应用程序虚拟化的SoftGrid,到桌面虚拟化的VPC,再到用户界面虚拟化的Terminal Services,一应俱全。而且为这些所有的产品提供了统一的管理平台:System Center, 不管是物理机,还是Hyper-V,VPC,Virtual Server的虚机,甚至是VMware的虚拟机都可以通过System Center的管理工具进行统一管理,并且彼此兼容。另外微软还提供了自己的服务器操作系统和一些其他服务器产品(比如Exchange Server),能够做到在后台将虚拟化产品和其他服务器产品的联动支持和无缝连接,所以微软能够为用户提供一套完整的虚拟化解决方案。
随着Windows Server 2008的发布及其全新的Hyper-V虚拟化支持,微软终于能够向VMware――这个企业虚拟化市场所制造的成熟又健壮的ESX Server发出正式的挑战了。
VMware的ESX Server 3.5和微软的Hyper-V采用的都是基于管理程序的(hypervisor-based)服务器虚拟化技术。这就使这两个软件都可以直接安装到裸机上,因此它们有着比诸如Microsoft VirtuaI Server 2005和VMware VirtuaI Server 2.0等旧式虚拟产品优秀得多的表现。以前那些虚拟产品都是在主操作系统上运行虚拟软件,这会给在虚拟环境中运行的虚拟机带来额外的开销,更长的代码执行路径。相反,像ESX Server和Hyper-V这样的基于管理程序的虚拟化产品则是直接在系统硬件上运行管理程序的。尽管ESX Server和Hyper-V有着相似的基于管理程序的架构,它们的设计却迥然不同。
这两个产品的管理程序都是直接在系统硬件上运行的。然而,对于ESX Server来说,所有的硬件驱动程序都只是管理程序的一部分,这一点大大增加了管理程序的大小。除此之外,它的设备驱动程序是由硬件供应商制造的,于是第三方代码就被引入管理程序,这限制了它所支持的硬件类型。即便如此,几乎所有的一级供应商,例如HP、DelI和IBM等,他们所制造的服务器系统都能够正常运行ESX Server。另外,许多一级供应商也出售预装了ESX Server的系统配置。
相反,Hyper-V使用的是微核管理程序,该管理程序包含最少量的代码,用于不同虚拟机之间调度和共享硬件资源。Hyper-V的管理程序既没有设备驱动程序,也没有第三方代码,这就保证了它的最佳性能, 同时也减少了安全隐患。Hyper-V利用本机Windows设备驱动程序模型,以及子虚拟机中的设备驱动程序。
总结
看完他们的口水仗之后,其实我们也很难给出一个结论。同样基于裸金属硬件虚拟化架构下的微软Hyper-V和VMware的ESX,也许这两种技术并不存在谁优谁劣,区别只在于什么类型的用户更适合什么样的具体解决方案。
该架构极大地减少发送I/O请求所需的开销。如果Virtual Server用户把虚机迁移到Hyper-V中,能体会到高I/O的工作负载的CPU开销大大降低。
在虚拟化领域,微软是继VMware后最大的竞争者,它的出场引发了一个讨论:Hyper-V是否会超越VMware ESX Server成为主导的hypervisor。VMware与微软及其余竞争者之间的争论是一场热烈的战争,让想人起了Windows与Mac OS之间的战争。
VMware对 Hyper-V的看法
对于微软这样庞大的但在虚拟化领域的后来者,VMware方面认为,VMware是最有经验的公司。VMware有10年的虚拟化经验和一个庞大的用户基础,包括100%的财富500强公司和92%的财富1000强公司,全球总共有超过10万的用户。VMware还拥有11个虚拟化专利权,在2007年,VMware的收入达到了13.3亿美元。
拥有新虚拟化产品的微软几乎没有企业虚拟化经验,到目前为止,还没有财富500强的用户在生产环境里采用微软的企业虚拟化产品。哪个公司听起来更能胜任提供你企业的虚拟化解决方案?
据称ESX已经有过运行1000多天而没有一次重启的记录;而由于Windows更新,Windows Server 2008 Hyper-V需要,每三十天重启一次。总而言之,如果你仅仅看到一个单独的VMware Infrastructure企业套件许可证要花费6950美元,相比一个单独的Windows Server 2008企业或标准的套件许可证来说,毫无疑问,VMware解决方案花费更多。然而,就性能而言,VMware仍然比微软的Hyper-V胜出一筹。
微软是毫不示弱给予回击
Microsoft Hyper-V 和VMware ESX Server都是基于硬件支持的Bare-Metal虚拟化产品,他们最大的区别在于,Microsoft Hyper-V采用了微内核的结构,而ESX Server是一个单内核的产品。
单内核的主要特点是硬件的驱动程序集中在Hypervisor一层,被Hypervisor上的所有的虚机所共同使用。当一个虚机的OS需要访问硬件时,它通过Hypervisor中的driver model来访问,这种单内核的Hypervisor能够提供很好的性能,但是它在安全性和兼容性上存在缺陷。由于驱动程序和一些第三方代码跑在一个很敏感的区域内,这种模式有了一个很大的被攻击面。
设想下某些不怀好意的代码被隐藏在驱动程序当中,然后跑在Hypervisor中,这会影响到所有的客户虚拟机,而且这是很难被发现的,因为对于实际被使用的虚机来说,Hypervisor这层是不可见的,所以无法通过一些病毒软件去监控它。 另外一个问题就是稳定性,假设某个驱动程序当中存在bug,那么它将影响到所有的虚机。另外你还要求Hypervisor去支持所有的驱动程序,造成了这层体积较为庞大。所以单内核的Hypervisor一般被认为是胖Hypervisor。
而Hyper-V采用了微内核的结构,它是一个瘦Hypervisor。因为它里面没有驱动程序,所以在体积上Hyper-V更有优势,另外,由于微内核体积较小,所以运行的效率很高。驱动程序是跑在每一个分区里面的,每一个分区内的虚机OS都能够通过Hypervisor直接访问硬件,还使得每一个分区都相互独立,这样就拥有更好的安全性和稳定性。
除此之外,大多数虚拟化解决方案都是采用了硬件模拟来解决硬件访问的兼容性问题,但是也造成了很大的开销和性能损失。而微软的Hyper-V没有采用这样的做法,而是采用了Enlightenment(启蒙)技术。它能够对那些虚拟机操作系统进行启蒙,让它们明白自己是一个虚拟机,被启蒙过的虚拟机操作系统会记住虚拟化,所以他们可以不需要硬件模拟,而是通过VSP/VSC这套组件来进行的,当子分区内的操作系统需要访问硬件的时候,由子分区内的VSC(Virtualization Service Client)通过VMBUS将request发给父分区里面的VSP(Virtualization Service Provider),然后由VSP去提供实际的硬件服务。通过这种方式来使用硬件,相对于使用硬件模拟的方法,其访问性能有了大幅度的提高。
另外这种方式可以兼容大量的驱动程序,而不必像ESX Server一样为虚拟机开发专用的驱动程序。在大多数情况下,只要硬件设备能够在Windows Server 2008下工作,那么就肯定能够在虚拟机下工作。再加上Windows平台的驱动本来就比其他平台的驱动程序丰富,而ESX Server容易遇到兼容性方面的问题,所以在硬件兼容性支持上Hyper-V具有无可比拟的优势。
经过这几年的努力,微软为虚拟化技术提供了非常丰富和全面的产品线,从服务器虚拟化的Virtual Server, Hyper-V,到应用程序虚拟化的SoftGrid,到桌面虚拟化的VPC,再到用户界面虚拟化的Terminal Services,一应俱全。而且为这些所有的产品提供了统一的管理平台:System Center, 不管是物理机,还是Hyper-V,VPC,Virtual Server的虚机,甚至是VMware的虚拟机都可以通过System Center的管理工具进行统一管理,并且彼此兼容。另外微软还提供了自己的服务器操作系统和一些其他服务器产品(比如Exchange Server),能够做到在后台将虚拟化产品和其他服务器产品的联动支持和无缝连接,所以微软能够为用户提供一套完整的虚拟化解决方案。
随着Windows Server 2008的发布及其全新的Hyper-V虚拟化支持,微软终于能够向VMware――这个企业虚拟化市场所制造的成熟又健壮的ESX Server发出正式的挑战了。
VMware的ESX Server 3.5和微软的Hyper-V采用的都是基于管理程序的(hypervisor-based)服务器虚拟化技术。这就使这两个软件都可以直接安装到裸机上,因此它们有着比诸如Microsoft VirtuaI Server 2005和VMware VirtuaI Server 2.0等旧式虚拟产品优秀得多的表现。以前那些虚拟产品都是在主操作系统上运行虚拟软件,这会给在虚拟环境中运行的虚拟机带来额外的开销,更长的代码执行路径。相反,像ESX Server和Hyper-V这样的基于管理程序的虚拟化产品则是直接在系统硬件上运行管理程序的。尽管ESX Server和Hyper-V有着相似的基于管理程序的架构,它们的设计却迥然不同。
这两个产品的管理程序都是直接在系统硬件上运行的。然而,对于ESX Server来说,所有的硬件驱动程序都只是管理程序的一部分,这一点大大增加了管理程序的大小。除此之外,它的设备驱动程序是由硬件供应商制造的,于是第三方代码就被引入管理程序,这限制了它所支持的硬件类型。即便如此,几乎所有的一级供应商,例如HP、DelI和IBM等,他们所制造的服务器系统都能够正常运行ESX Server。另外,许多一级供应商也出售预装了ESX Server的系统配置。
相反,Hyper-V使用的是微核管理程序,该管理程序包含最少量的代码,用于不同虚拟机之间调度和共享硬件资源。Hyper-V的管理程序既没有设备驱动程序,也没有第三方代码,这就保证了它的最佳性能, 同时也减少了安全隐患。Hyper-V利用本机Windows设备驱动程序模型,以及子虚拟机中的设备驱动程序。
总结
看完他们的口水仗之后,其实我们也很难给出一个结论。同样基于裸金属硬件虚拟化架构下的微软Hyper-V和VMware的ESX,也许这两种技术并不存在谁优谁劣,区别只在于什么类型的用户更适合什么样的具体解决方案。
Apr
21
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
<rewrite>
<rules>
<rule name="Rewrite subdomain">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^yourdomain\.com$" />
</conditions>
<action type="Redirect" url="http://www.yourdomain.com/{R:1}" appendQueryString="false"/>
</rule>
<rule name="From Ultimate SEO URLs 1" stopProcessing="true">
<match url="^(.*)-p-(.*).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=product_info&products_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="From Ultimate SEO URLs 2" stopProcessing="true">
<match url="^(.*)-c-(.*).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=index&cPath={R:2}&" appendQueryString="true" />
</rule>
<rule name="From Ultimate SEO URLs 3" stopProcessing="true">
<match url="^(.*)-m-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=index&manufacturers_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="From Ultimate SEO URLs 4" stopProcessing="true">
<match url="^(.*)-pi-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=popup_image&pID={R:2}&" appendQueryString="true" />
</rule>
<rule name="From Ultimate SEO URLs 5" stopProcessing="true">
<match url="^(.*)-pr-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=product_reviews&products_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="From Ultimate SEO URLs 6" stopProcessing="true">
<match url="^(.*)-pri-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=product_reviews_info&products_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="For Open Operations Info Manager" stopProcessing="true">
<match url="^(.*)-i-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=info_manager&pages_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 1" stopProcessing="true">
<match url="^news/?$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 2" stopProcessing="true">
<match url="^news/rss.xml$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news_rss&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 3" stopProcessing="true">
<match url="^news/archive/?$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news_archive&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 4" stopProcessing="true">
<match url="^news/([0-9]{4})-([0-9]{2})-([0-9]{2}).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news&date={R:1}-{R:2}-{R:3}&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 5" stopProcessing="true">
<match url="^news/archive/([0-9]{4})-([0-9]{2}).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news_archive&date={R:1}-{R:2}&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 6" stopProcessing="true">
<match url="^news/(.*)-a-([0-9]+)-comments.html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news_comments&article_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 7" stopProcessing="true">
<match url="^news/(.*)-a-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news_article&article_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="All other pages" stopProcessing="true">
<match url="^(.*).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page={R:1}&" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
</configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
<rewrite>
<rules>
<rule name="Rewrite subdomain">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^yourdomain\.com$" />
</conditions>
<action type="Redirect" url="http://www.yourdomain.com/{R:1}" appendQueryString="false"/>
</rule>
<rule name="From Ultimate SEO URLs 1" stopProcessing="true">
<match url="^(.*)-p-(.*).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=product_info&products_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="From Ultimate SEO URLs 2" stopProcessing="true">
<match url="^(.*)-c-(.*).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=index&cPath={R:2}&" appendQueryString="true" />
</rule>
<rule name="From Ultimate SEO URLs 3" stopProcessing="true">
<match url="^(.*)-m-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=index&manufacturers_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="From Ultimate SEO URLs 4" stopProcessing="true">
<match url="^(.*)-pi-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=popup_image&pID={R:2}&" appendQueryString="true" />
</rule>
<rule name="From Ultimate SEO URLs 5" stopProcessing="true">
<match url="^(.*)-pr-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=product_reviews&products_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="From Ultimate SEO URLs 6" stopProcessing="true">
<match url="^(.*)-pri-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=product_reviews_info&products_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="For Open Operations Info Manager" stopProcessing="true">
<match url="^(.*)-i-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=info_manager&pages_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 1" stopProcessing="true">
<match url="^news/?$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 2" stopProcessing="true">
<match url="^news/rss.xml$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news_rss&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 3" stopProcessing="true">
<match url="^news/archive/?$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news_archive&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 4" stopProcessing="true">
<match url="^news/([0-9]{4})-([0-9]{2})-([0-9]{2}).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news&date={R:1}-{R:2}-{R:3}&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 5" stopProcessing="true">
<match url="^news/archive/([0-9]{4})-([0-9]{2}).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news_archive&date={R:1}-{R:2}&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 6" stopProcessing="true">
<match url="^news/(.*)-a-([0-9]+)-comments.html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news_comments&article_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="For dreamscape's News and Articles Manager 7" stopProcessing="true">
<match url="^news/(.*)-a-([0-9]+).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page=news_article&article_id={R:2}&" appendQueryString="true" />
</rule>
<rule name="All other pages" stopProcessing="true">
<match url="^(.*).html$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?main_page={R:1}&" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
</configuration>
Apr
21
# if the requested file exists, return it immediately
if (-f $request_filename) {
break;
}
rewrite “^/(.*)-p-(.*).html$” /index.php?main_page=product_info&products_id=$2&% last;
rewrite “^/(.*)-c-(.*).html$” /index.php?main_page=index&cPath=$2&% last;
rewrite “^/(.*)-m-([0-9]+).html$” /index\.php?main_page=index&manufacturers_id=$2&% last;
rewrite “^/(.*)-pi-([0-9]+).html$” /index\.php?main_page=popup_image&pID=$2&% last;
rewrite “^/(.*)-pr-([0-9]+).html$” /index\.php?main_page=product_reviews&products_id=$2&% last;
rewrite “^/(.*)-pri-([0-9]+).html$” /index\.php?main_page=product_reviews_info&products_id=$2&% last;
# For wordpress on zencart by Jeff
rewrite “^/wp/(.*).html$” /index.php?main_page=wordpress&page_id=$1&% last;
# For eazy pages
rewrite “^/(.*)-ezp-([0-9]+).html$” /index\.php?main_page=page&id=$2&% last;
# For Open Operations Info Manager
rewrite “^(.*)-i-([0-9]+).html” /index.php?main_page=info_manager&pages_id=$2&% last;
# For dreamscape¡¯s News & Articles Manager
rewrite “^news/?” /index.php?main_page=news&% last;
rewrite “^news/rss.xml” /index.php?main_page=news_rss&% last;
rewrite “^news/archive/?” /index.php?main_page=news_archive&% last;
rewrite “^news/([0-9]{4})-([0-9]{2})-([0-9]{2}).html” /index.php?main_page=news&date=$1-$2-$3&% last;
rewrite “^news/archive/([0-9]{4})-([0-9]{2}).html” /index.php?main_page=news_archive&date=$1-$2&% last;
rewrite “^news/(.*)-a-([0-9]+)-comments.html” /index.php?main_page=news_comments&article_id=$2&% last;
rewrite “^news/(.*)-a-([0-9]+).html” /index.php?main_page=news_article&article_id=$2&% last;
# All other pages
# Don‘t rewrite real files or directories
rewrite “^(.*).html” /index.php?main_page=$1&% last;
if (-f $request_filename) {
break;
}
rewrite “^/(.*)-p-(.*).html$” /index.php?main_page=product_info&products_id=$2&% last;
rewrite “^/(.*)-c-(.*).html$” /index.php?main_page=index&cPath=$2&% last;
rewrite “^/(.*)-m-([0-9]+).html$” /index\.php?main_page=index&manufacturers_id=$2&% last;
rewrite “^/(.*)-pi-([0-9]+).html$” /index\.php?main_page=popup_image&pID=$2&% last;
rewrite “^/(.*)-pr-([0-9]+).html$” /index\.php?main_page=product_reviews&products_id=$2&% last;
rewrite “^/(.*)-pri-([0-9]+).html$” /index\.php?main_page=product_reviews_info&products_id=$2&% last;
# For wordpress on zencart by Jeff
rewrite “^/wp/(.*).html$” /index.php?main_page=wordpress&page_id=$1&% last;
# For eazy pages
rewrite “^/(.*)-ezp-([0-9]+).html$” /index\.php?main_page=page&id=$2&% last;
# For Open Operations Info Manager
rewrite “^(.*)-i-([0-9]+).html” /index.php?main_page=info_manager&pages_id=$2&% last;
# For dreamscape¡¯s News & Articles Manager
rewrite “^news/?” /index.php?main_page=news&% last;
rewrite “^news/rss.xml” /index.php?main_page=news_rss&% last;
rewrite “^news/archive/?” /index.php?main_page=news_archive&% last;
rewrite “^news/([0-9]{4})-([0-9]{2})-([0-9]{2}).html” /index.php?main_page=news&date=$1-$2-$3&% last;
rewrite “^news/archive/([0-9]{4})-([0-9]{2}).html” /index.php?main_page=news_archive&date=$1-$2&% last;
rewrite “^news/(.*)-a-([0-9]+)-comments.html” /index.php?main_page=news_comments&article_id=$2&% last;
rewrite “^news/(.*)-a-([0-9]+).html” /index.php?main_page=news_article&article_id=$2&% last;
# All other pages
# Don‘t rewrite real files or directories
rewrite “^(.*).html” /index.php?main_page=$1&% last;