源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

ISAPI_Rewrite 3.1 教程中文版

  • 时间:2020-06-19 11:57 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:ISAPI_Rewrite 3.1 教程中文版
[b]第一章:软件介绍 [/b]ISAPI_Rewrite 是一款适用于IIS的功能强大的基于正则表达式的URL处理模块。它兼容Apache的mod_rewrite的语法,从而使仅仅复制.htaccess文件就把配置从appach移植到IIS中或者从IIS移值到appach中变成可能。请参阅3.2兼容性图表这一节。 ISAPI_Rewrite最重要的功能: ISAPI_Rewrite提供了和Apach mod_rewrite相同的句法和行为,使仅仅拷贝.htaccess文件就完成配置移植成为功能。(要想阅读更多关于与mod_rewrite的兼容性,请参阅3.2兼容性图表这一节。) 正则表达式支持灵活而强大的配置。 极速而且容易升级的纯C++代码。 真正的分布式配置:实时监控服务器全局级别、虚拟主机(网站)级别、目录级别的.htaccess文件。 隔离性:用户级配置只影响本地用户环境,从而使ISAPI_Rewrite成为Web主机提供商的理想解决方案。 重要的应用示例: 搜索引擎优化。 一台Web服务器的代理内容经过另一台web服务器。 防止内容被吸血(盗链)。 阻断特定主机、反向链接或者烦人的搜索机器人。 内容商议:向不同的语言用户或者不同的浏览器用户提供不同的文件。示例 为群集式服务器架构模拟负载均衡。 定价资料 45天的试用期 单机版99美元 ISAPI_Rewrite精简版是免费的。在这里可以看到受限的细节说明。 大宗采购可议折扣。 [b]2.1系统要求[/b] ISAPI_Rewrite可以被安装在下列操作系统中: Windows 2000 with IIS 5 Windows XP with IIS 5.1 Windows Server 2003 with IIS 6.0 Windows Vista with IIS 7.0 Windows Server 2008 with IIS 7.0 在安装ISAPI_Rewrite之前,操作系统中必须先安装IIS。 32位和64位的Windows版本都是支持的,但是你必须下载32位版和64位版两种不同的安装包。Windows Installer 2.0必须运行安装程序。你可以从微软的网站上下载到最新版本的Windows Installer。 在Windows Vista和Windows Server 2008上安装ISAPI_Rewrite,还必须先安装下面两个模块(默认情况下这两个模块是不安装的) ISAPI过滤器 ISAPI 扩展 [b]2.2安装程序 [/b]在运行安装包之前请先阅读系统要求部分。下载并安装某个版本的ISAPI_Rewrite.msi,依照安装向导的说明操作。安装过程是自动的,并有自我描述。ISAPI_Rewrite在自动安装过程中必须重启IIS。下列服务必须被重启:IISADMIN、W3SVC。不需要手工把任何ISAPI筛选器或者扩展加入到网站或者全局列表中。它能够在安装和配置过程中自动完成。 命令行安装 ISAPI_Rewrite也能够通过命令行进行后台安装。请使用以下命令行语法来安装:
[url=/folder/]3.把所有的页面相对链接都变成相对于根目录的地址或者绝对地址形式。 还存在着很多种用了不同的分隔符和文件扩展名的规则。例如,使用像这样的URL:http://www.myhost.com/foo.asp~a~A~b~B~c~C。下面的规则可以用来实现它:
RewriteEngine on
RewriteRule ^(.*?.asp)~([^~]*)~([^~]*)(.*) $1$4?$2=$3 [NC,LP,QSA]
[b]富关键词URLs[/b] 在上面的例子中,我们使用很一般的技术来简单地藏匿查询字符串标记。但是很多对搜索引擎优化很有用的解决方案是让您的URL关键字丰富。看看下面的网址,例如:http://www.mysite.com/productpage.asp?productID=127这是大部分网站的常见情况。但是你可以通过使用这样形式的链接来显著地提高你的网页搜索引擎抓取率:http://www.mysite.com/products/our_super_tool.asp,URL中的关键词“our super tool”会被索引,并提高网页排名,但是“our_super_tool”不能直接被用来收回productid=127,这个问题存在几种解决方案。 第一个解决方案,我们建议你使用简短、只包含少数几个参数(既有关键词也有数字标识符)的URL形式,在样您的URL可能看起来如下: http://www.mysite.com/products/our_super_tool_127.asp。实现这一重写目标只需要一个规则:
RewriteEngine on
RewriteBase /
RewriteRule ^products/[^?/]*_(d+).asp /productpage.asp?productID=$1 [QSA]
另一个更复杂的解决方案是创建一对一的映射文件,并用它来映射“our_super_tool”到127。该解决方案对一些有很多参数的长URL来说很有用,并允许你隐藏数字标识符。这URL看起来像是http://www.mysite.com/products/our_super_tool.asp。请注意“our_supper_tool”部分必须是产品的唯一标识,是它的标识符。下面是这种解决方案的一个示例:
RewriteEngine on
RewriteBase /
RewriteMap mapfile txt:mapfile.txt
RewriteRule ^products/([^?/]+).asp /productpage.asp?productID=${mapfile:$1}
而且你必需创建包含以下内容的mapfile.txt映射文件:
one_product    1
another_product  2
our_super_tool  127
more_products   335
这种方法的优点是:你可以使用它来组合十分复杂的URL转换,但是这是一个小例子,是这个指南中的题外之话。 [b]使用IIS作为反向代理[/b] 假设你有运行IIS的互联网服务器以及几台后台服务器或者应用程序运行在其它平台或者机器上。这些服务器不能直接在互联网上阅览,但是你必须为他人提供访问这些服务器的渠道。这里有一个演示如何简单地将某个网站的完整内容映射到另一个运行了ISAPI_Rewrite的站点的文件夹的示例:
RewriteEngine on
RewriteBase /
RewriteRule mappoint(.+) http://sitedomain$1 [NC,P]
[b]藏匿文件扩展名:[/b] 虽然不可能将一个站点的所有的文件的扩展名都藏匿起来,但是我们可以使用ISAPI_Rewrite的文件检查功能来隐藏某些已知扩展名。这里有一个藏匿网站上.asp文件扩展名的规则示例:
RewriteEngine on
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+).asp$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.asp -f
RewriteRule (.*) $1.asp
[b]仿真基于主机头的虚拟网站[/b] 例如你已经注册了两个域名[b]www.site1.com[/b]和[b]www.site2.com[/b]。现在你可以使用同一个物理站创建两个不同的站点了。这里是一个规则示例:
RewriteEngine on
#Fix missing trailing slash char on folders
RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]
#Emulate site1
RewriteCond %{HTTP:Host} ^(?:www.)?site1.com$
RewriteRule (.*) /site1$1 [NC,L,NS]
#Emulate site2
RewriteCond %{HTTP:Host} ^(?:www.)?site2.com$
RewriteRule (.*) /site2$1 [NC,L,NS] 
现在只要把你的站点分别放到/site1和/site2目录下就可以了。注意www.site1.com和www.site2.com这两个域名必须在IIS中被映射到这个网站里,从而使ISAPI_Rewrite能拦截到请求。 或者,你可以使用更多通用的规则,从而把任何请求都映射到与请求主机名同名的文件夹里。
RewriteEngine on
#Fix missing trailing slash char on folders
RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]
#Map requests to the folders
RewriteCond %{HTTP:Host} ^(www.)?(.+)
RewriteRule (.*) /%2$1 [NS]
网站的目录名应该是这样子的:/somesite1.com,/somesite2.info,等等。 [b]阻断内联图像(阻止盗链)[/b] 假如你有一些页面插入了[b]http://www.mysite.com/[/b]下的gif图片。一些其它站点将通过网页超链接插入这些图片。这会给你的网站增加很多无用的通讯量,而且你希望阻止这种做法。 虽然用ISAPI_Rewrite不能100%地保护图片不被盗链(只有专门的反盗链产品才能做到它),你至少可以在浏览器发来HTTP引用头的时候限制这种情况。下面的规则可以让你只允许来自同一主机的引用页或者空地址访问到这些图片。
RewriteEngine on
RewriteCond %{HTTP:Host}#%{HTTP:Referer} ^([^#]+)#(?!http://1).+
RewriteRule .*.(?:gif|jpg|png) /block.gif [NC]
[b]重定向非www的版本到www[/b] 如果你的网站同时可以通过两种形式的URL比如说http://helicontech.com和http://www.helicontech.com来访问到,那么最好将一种地址重定向到另一种地址里,来避免搜索引擎对重复内容做出的处罚。下面是一个能将所有的非www地址重定向到相应的www地址上去的301重定向规则。
RewriteEngine on
RewriteCond %{HTTPS} (on)?
RewriteCond %{HTTP:Host} ^(?!www.)(.+)$ [NC]
RewriteCond %{REQUEST_URI} (.+)
RewriteRule .? http(?%1s)://www.%2%3 [R=301,L]
[b]强制SSL或者非SSL到一个指定的位置[/b] 这里是一个演示如何将SSL强制转到指定的文件夹的示例。只要简单地把下面的规则放到该文件夹下的.htaccess文件里就可以了。
RewriteEngine on
#Fix missing trailing slash char on folders
RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]
#Redirect non-HTTPS to HTTPS
RewriteCond %{HTTP:Host} (.*)
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (.*)
RewriteRule .? https://%1%2 [R,L]
而这个示例作用正好相反:将非SSL强制转到指定文件夹。
RewriteEngine on
#Fix missing trailing slash char on folders
RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]
#Redirect HTTPS to non-HTTPS
RewriteCond %{HTTP:Host} (.*)
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} (.*)
RewriteRule .? http://%1%2 [R,L]
[b]转移站点位置[/b] 当你把网站从一个域名移到另一个域名,或者从一个文件夹移动另一个文件夹里的时候,这是经常会遇到的问题。你希望将一个网站的所有请求重定向到另一个网站里,而且不丢失请求资源名以及参数。当你希望保留现有的网页的排名和外链接的时候,它是非常有用的。这个解决方案是在旧的网站服务器上使用ISAPI_Rewrite:
RewriteEngine on
#Permanent redirect to update old links
RewriteRule (.+) http://newserver.com$1 [R=301,L]
[b]平衡负荷仿真[/b] 这个示例模拟某种DNS轮换负荷平衡技术。假设你有主站www.mysite.com和数台web服务器分别注册为www[1-9].mysite.com。如果你在主服务器上安装了ISAPI_Rewrite,你可以将初始的客户端请求重定向到几台特定服务器,从而在几台服务器之间随机摊开通讯量。一旦已重定向,客户端将一直使用这一台服务器。虽然这种解决方案并不非常理想,但是它确实能分摊你的通讯量并避免在维护会话状态方面发生的问题。 使用下面的规则来重定向客户端:
RewriteEngine on
RewriteMap hosts rnd:hosts.txt
RewriteCond %{HTTP:Host} (www).mysite.com [NC]
RewriteRule (.*) http://${hosts:%1}.mysite.com$1 [R,L]
下面是hosts.txt文件的内容
www www1|www2|www3|www4|www5|www6|www7|www8|www9
你还可以在Apeche文档里找到很多其它有用的例子。它们多数不需要修改就可以在ISAPI_Rewrite3里使用。 [h2]故障处理[/h2]
[b]Chapter 6故障处理[/b] 在这里你可以一步步找到你在安装ISAPI时遇到的问题的解决方法。 1.首先要正确解决您的问题,我们需要你运行最新的可用版本的ISAPI_Rewrite软件。你可以随时到我们的网站下载最新版的软件来升级你的ISAPI_Rewrite。地址是http://www.helicontech.com/download-isapi_rewrite3.htm[/url] 。 2.多数运行ISAPI_Rewrite的问题发生在服务器上NTFS权限限制上。所以,请先阅读需要运行ISAPI_Rewrite文件的权限。 3.请检查应用程序和系统日志中的错误信息。这可能指出您的错误原因。 4.不要忘记设置RewriteEngine on指令在你所用的每个配置文件中。 5.把下列代码行放到httpd.conf文件中:
RewriteLogLevel 9
LogLevel debug
它将创建error.log和rewrite.log两个日志文件,默认放在安装目录下。如果日志文件被创建了,它表明ISAPI_Rewrite正在运行。阅读作为结果的error.log和rewrite.log文件,将能告诉你一些问题的根源线索。 6.如果httpd.conf规则正在生效,但是.htaccess文件却没有载入,请再次检查.htaccess文件的NTFS权限,并确保你没有在使用ISAPI_Rewrite的精简版。 7.如果规则在httpd.conf里能生效,但是有其它部分或者.htaccess文件里不能生效,请确保在每个部分的或者.htaccess文件里包含RewriteEngine on指令。同样的,不要忘掉.htaccess文件里的默认rewriting base值与httpd.conf是不同的。在.htaccess文件里或者<Directory>部分里,ISAPI_Rewrite会自动从路径中剥离本地目录前缀并只对剩下的部分应用规则。所以如果你的规则以“/”字符开头的话,在网站根目录的.htaccess文件中它必须被去掉。 如果你在使用ISAPI_Rewrite时依然有问题,请到技术支持论坛里来写下你的问题,或者发送电子邮件到技术支持邮箱里。 请在您的支持请求里包括以下信息: 1.您的ISAPI_Rewrite配置文件,包括路径和文件名。 2.您的网站的地址链接。 3.你用到测试你的规则的URL。 4.与失败的请求error.log和rewrite.log的文件副本。 5.包括失败的请求的部分IIS日志文件。 请记住你提供的信息越多,我们越容易为你解决问题。这样你更有机会快速地得到解决方案。
ISAPI_Rewrite 发布历史 发布 3.1.0.67 ================ [筛选器功能] 增强映射文件的动态加载 [代理帮助文件错误]如果后端不设置内容长度头的话,并不会返回所有的响应。 发布 3.1.0.66 ================ [b] [/b] [b]精简版的限制[/b] ISAPI_Rewrite的精简版拥有相同的引擎和重写功能。但是也有下面这些限制: ? 不支持分布式.htaccess配置、目录以及网站级配置,只有一个精简版安装目录中的全局的httpd.conf配置能被载入。 ? 不支持<VirtualHost>、<Directory>、<DirectoryMatch>、<Files>、<FilesMatch>、<Location> 以及<LocationMatch>这几个标签。 ? 精简版中没有代理服务模块,因而所有的和代理服务功能相关的比如说RewriteProxy指令以及[P]标记都会被忽略。 ? 精简版没有针对于虚拟主机环境的手工安装包 ISAPI_Rewrite精简版完全免费,它对开发或者测试目的以及只有几个网站而且不需要分布式配置或者代理功能的小型服务器来说是一个很好的解决方案 [b]技术信息[/b] ISAPI_Rewrite由四个部分组成:ISAPI筛选器、ISAPI扩展帮助、GUI管理器以及MMC嵌入式管理单元扩展。ISAPI_Rewrite筛选器和扩展都是用纯C++语言写的快速DLL模块。当安装ISAPI_Rwrite的时候, MMC嵌入式管理单元会被自动注册。ISAPI筛选器将安装在一个全局级别上,你不需要手工注册它。ISAPI扩展也会被安装并注册。 ISAPI_Rewrite管理器实用工具可以在没有安装MMC的系统中运行ISAPI_Rewrite MMC嵌入式管理单元。 Windows Vista以及Windows Server 2008系统中的ISAPI_Rewrite管理器实用工具(Helicon Manager.exe)要求管理员权限来执行,因为较小权限的用户没有权力读取IIS管理元库,而它对显示网站配置来说是必需的。如果用受限的帐号运行ISAPI_Rewrite管理器,你会得到登录管理员帐号的自动提示。 ISAPI_Rewrite筛选器已经有足够地快,因此不用担心它的性能。除非你的服务器运行在最大负荷之下。用户在响应时间或者CPU负荷方面几乎不能发现什么区别,但是如果用了很多的规则的话,服务器最大带宽可能掉下一点来。所以请注意你用的配置决定了性能。建议每个网站使用的规则不要超过100条。在多数情况下,可以利用RewriteMap来避免使用大量的规则。 该程序使用了Regex++ 库。 Regex++ (Version Boost 1.31) Copyright ?1998-2004, Dr John Maddock [b]使用和传播许可[/b] 该使用许可覆盖了所有的现有版本的ISAPI_Rewite,包括ISAPI_Rewrite、ISAPI_Rewrite完全版、ISAPI_Rewrite精简版、ISAPI_Rewrite测试版,后面统称为ISAPI_Rewrite除非另有指明。 1.所有未明确授予的权利均由Helicon Tech保留。 2.所有的关于ISAPI_Rewrite的版权都由它的作者Helicon Tech独家保留。 3. Helicon Tech准予免费使用ISAPI_Rewrite精简版产品。 4. Helicon Tech准予免费试用ISAPI_Rewrite产品30天,当试用期结束时,请要么购买ISAPI_Rewrite,要么删除ISAPI_Rewrite产品。 5.未注册过的ISAPI_Rewrite试用版,可以在不被改动的前提下自由传播,除非有下例情况。任何个人或者公司都不用为在未得版权持有人书面许可的情况下传播ISAPI_Rewrite而付费。未经版权持有者的书面许可,未注册的试用版ISAPI_Rewrite不允许捆绑其它安装包。 6. ISAPI_Rewrite必须被原样传播,不提供任何形式的保证明示或暗示。你可以在你自己的磁盘上使用ISAPI_Rewrite。作者不为因为滥用本软件导致的数据丢失、损坏,或任何其他类型的损失承担责任。 7.你不得使用、复制、模仿、克隆、出租、出售、修改、反编译、反汇编以及其它任何反向工程,或者转让许可程序,或者任何许可程序的一个子集,除非本协议有提供。任何未经授权的使用将导致本许可自动终止。并可能导致刑事或民事起诉。 8.本许可协议的条款是在未来版本的ISAPI_Rewrite将会有所变化。 9.当你购买ISAPI_Rewrite时,将发给你“注册码”。这种“注册码”可以个人或者公司购买,并只在一台计算机上使用。如果您购买一个以上的ISAPI_Rewrite副本,发给你们的“注册码”只能在等于你购买的许可证数的计算机上使用。 10.您只能使用来自Helicom Tech以及与Helicom Tech有业务合作或者技术合作的公司的注册码。 11. 安装和使用ISAPI_Rewrite意味着接受这些条款及许可条件。 12. 如果您不同意本许可证的条款或违反本许可与您当地的法律规定,您必须从您的存储设备中删除ISAPI_Rewrite文件,并停止使用该产品。 13.我们坚持严格的隐私的准则,不会收集个人识别信息,除非是自愿提供的。 如果您有进一步的问题或意见,请访问我们的http://www.helicontech.com。 感谢你使用ISAPI_Rewrite。 Helicon Tech Corporation.
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部