百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 网站模板(百分百源码网)>电脑软件>服务器> ISAPI_Rewrite 3.1 教程中文版
分享本文到:

ISAPI_Rewrite 3.1 教程中文版

发布时间:05/16 来源:未知 浏览: 关键词:
第一章:软件介绍
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精简版是免费的。在这里可以看到挨限的细节注明。
大宗采购可议折扣。

2.1系统要求
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 扩展

2.2安装程序
在运转安装包以前请先浏览系统要求局部。下载并安装某个版本的ISAPI_Rewrite.msi,遵照安装领导的注明操纵。安装历程是主动的,并有自我描述。ISAPI_Rewrite在主动安装历程中必须重新启动IIS。以下服务必须被重新启动:IISADMIN、W3SVC。不需要手工把任何ISAPI筛选器或者扩展参加到网站或者全局列表中。它能够在安装和配置历程中主动完成。
下令行安装
ISAPI_Rewrite也能够通过下令行进行后台安装。请运用下列下令行语法来安装:
复制代码 代码如下:
msiexec /i ISAPI_Rewrite3.msi /qn AcceptEULA=Yes REGISTRATIONCODE=Code
REGISTRATIONNAME=Name

用下令行来后台反安装ISAPI_Rewrite请运用下面的语法:
复制代码 代码如下:
msiexec /x ISAPI_Rewrite3.msi /qn KEEPUSERFILES=Yes

2.3手工安装
要手工安装ISAPI_Rewrite的话,你必须下载不一样的手工安装包包含所有必须的文件。ISAPI_Rewrite精简版不支撑手工安装。你可以安装全部功能或者仅仅安装它们中的一局部。
手工安装包包含以下文件:
ISAPI_Rewrite.dll - 这是ISAPI筛选器自身。
ISAPI_RewriteProxy.dll - 这是为代理操纵的ISAPI扩展模块必不可少的。
license.rtf - EULA的产品许可证。
ISAPI_Rewrite.chm - .文档文件。
httpd.conf - 全局配置文件示例。
安装ISAPI_Rewrite,首先你必须在你在IIS系统中注册ISAPI_Rewrite.dll作为ISAPI筛选器。按默许ISAPI_Rewrite.dll文件是用来作为全局ISAPI筛选器的。而且它还能够被安装到某个特定的网站里,你需要记住在统一工夫段里只要一个ISAPI_Rewrite.dll实例能够加载到一个IIS工作进程里,这意味着要是你决议把ISAPI_Rewrite的ISAPI筛选器独自地安装到每个站点里的话,你必须把这些站点切换高隔离模式,从而为这些网站发生独立的工作进程。要是你需要在每个站点上离别安装ISAPI_Rewrite,我们平常会倡议改为在整个IIS上全局地安装它。
在Window 2000,Window XP 和Windows Server 2003中注册ISAPI 筛选器,不管是整个IIS服务器要用它还是一般WEB网站要用它,都要用IIS 的MMC治理单元来把ISAPI_Rewrite.dll添到ISAPI筛选器列表。在Windows Vista和Windows Server 2008中首先你需要安装可选IIS组件:万维网服务、利用程序开发功能、ISAPI筛选器。
要是你需要代理服务器功能,你还需要将ISAPI_RewriteProxy.dll注册为ISAPI扩展来侍服文件扩展名“*. rwhlp”。在不一样的IIS版本中要求不一样的操纵。请参阅你治理的IIS版本的文档来理解怎样注册一个新的ISAPI扩展并把它映射到IIS系统的文件扩展名上。在Windows Vista和windows server 2008首先必须安装可选的IIS组件:万组网服务、利用程序开发功能、ISAPI筛选器。运用短途径名(8.3模式)作为ISAPI_RewriteProxy.dll的模块途径,要是途径里有一个空格字符,IIS载入这个模块时将失败。
把httpd.conf文件放在ISAPI_Rewrite.dll文件的统一目录下并编辑它。
把以下两行内容放到httpd.conf文件中以注册ISAPI_Rewrite 产品:
RegistrationName=Your registration name
RegistrationCode=REG-CODE-PROVIDED-FROM-HELICON遵照“运转ISAPI_Rewrite的权限需求”这一局部的注明来检查文件系统权限。
2.4反安装
反安装程序会删除所有安装程序所生成的文件、从治理元库中注销筛选器,并删除所有由安装程序所增加的其它治理元库变化。要是会员决议在反安装历程中保存会员文件的话,以下会员数据文件在反安装后会被留下来。
文件名 注明
Program Files/Helicon/ISAPI_Rewrite/httpd.conf 会员法则的主配置文件
Program Files/Helicon/ISAPI_Rewrite/error.log 包含差错日志的文件
Program Files/Helicon/ISAPI_Rewrite/rewrite.log 包含重写日志的文件
.htaccess (various folders) 会员新建的含有法则的配置文件
“删除会员新建的文件”的选项在将反安装历程中供给给会员。要是启用这个选项则卸载程序也将删除位于Program Files文件夹里会员新建的文件。 .htaccess文件不会被删除。
要用下令行后台卸载ISAPI_Rewrite,请运用下面的语法:
复制代码 代码如下:

msiexec /x ISAPI_Rewrite3.msi /qn KEEPUSERFILES=Yes

2.5运转ISAPI_Rewrite所需的权限
在一个洁净的默许Windows系统上主动安装ISAPI_Rewrite不要求任何权限调整。但是一些其它产品比方说Plesk、IIS锁定工具的安装,等等,可能收紧服务器的平安性,并阴碍ISAPI_Rewrite的正常运转。下面是ISAPI_Rewrite的权限需求的列表单子:
在Windows 2000、Windows XP和Windows 2003的IIS5兼容模式下,筛选器运转在System帐户下的inetinfo.exe进程中。那个system帐户至少得被授予放置ISAPI_Rewrite安装文件的那个文件夹的“读取”和“目录阅读”的权限。我们还倡议给予system帐号对这个文件夹的个别修改权。这将允许生成一些包含解析或者其它差错的文件。system帐号还必须在任何包含了.htaccess文件的网站文件夹里一样被授予这些权限,否则ISAPI_Rewrite将不能加载并监视它。
请稍留神ISAPI_Rewrite安装目录上的任何一点拒绝权限设置,由于在Windows 操纵系统中,拒绝权限优先于任何允许权限记载。
在Windows 2003的自然IIS模式(WPI模式)以及Windows Server 2008中,不管是筛选器还是代理服务都运转在每个网站响应的运转程序池的w3p.exe工作进程中,每个利用程序池都可以运用它本人的定制来配置,这可能使权限设置成了一种复杂的工作。然而,在一个准确的IIS配置中,每个运用中的定制必须是IIS_WPG组的一个成员。因而,IIS_WPG组可以被用来取代System帐号去分配前面所写的权限需求。
在Windows Vista 中权限配置是和Windows 2003的配置差不多的,只是它没有IIW_WPG组。所以,所有的WPI帐号(个别Network Service是它的惟一帐号)都必须授予上述必需权限。
此外,为了让代理服务功能能工作,你必须在网站属性或者运转代理服务的web利用程序的属性中给予一个“纯脚本”的施行权限。
2.6MSI的自定义行为自定义行为


自定义行为 注明
WiseAltStartup
主动智能启动
为运转在延时模式中的自定义行为保留属性的目前状态。
运用一个可施行文件(dll)
产生在:安装、反安装。
WiseCleanup
智能清算
这个行为被调用来清算上一个自定义行为所遗留下的临时文件
运用一个可施行文件(dll)
产生在:安装、反安装。
WiseStartup
智能启动
这个行为使调用一个.dll文件或者提取须要Wisescript.exe文件和.dll文件的行为可以通报参数。
运用一个可施行文件(dll)
产生在: 安装、反安装
WiseUpgradeCheck
智能可选中地晋级
这个行为被调用来解决当Windows安装程序运转时不检测利用程序的早期版本的题目。
运用一个可施行文件(dll)
产生在:安装。
WiseUpgradeCheckEx
智能预选晋级
增加这个行为用来解决当Windows安装程序运转时不检测利用程序的早期版本的题目。
运用一个可施行文件(dll)
产生在:安装。
WiseGetIISVersion
智能获得IIS版本
对主要的IIS版本设置属性(IISVERSION).
运用一个可施行文件(dll)
产生在:安装。
RegisterFilterInMetabase
在治理元库中注册筛选器
这个行为增加一个命名为ISAPI_Rewrite3的全局ISAPI筛选器到IIS治理元库里
IIS5, IIS6 治理元库: IIS:/LM/W3SVC/Filters/ add key ISAPI_Rewrite3
IIS:/LM/W3SVC/Filters/FilterLoadOrder append "ISAPI_Rewrite3"
运用一个可施行文件(dll)
产生在:安装。

RemoveFilterFromMetabase
从治理元库中删除筛选器
这个行为从IIS治理元库里移除了名为ISAPI_Rewrite3的全局ISAPI筛选器。
IIS5, IIS6 治理元库: IIS://localhost/W3SVC/LM/W3SVC/Filters/ delete key ISAPI_Rewrite3
IIS:/LM/W3SVC/Filters/FilterLoadOrder remove"ISAPI_Rewrite3"
运用一个可施行文件(dll)
产生在:反安装、回滚。
AddApplicationExtension
增加利用程序扩展
只用于Windows 2003机器增加ISAPI_RewriteProxy.dll到ISAPI扩展中,并使Web服务器扩展名列表中的这个ISAPI扩展名可用。
IIS6治理元库: IIS:/LM/W3SVC/
adds entry to the在治理元库属性 WebSvcExtRestrictionList中添加metabase property "ISAPI_Rewrite3 proxy"条款;
在治理元库属性 ApplicationDependencies 添加"ISAPI_Rewrite3 proxy;ISAPI_Rewrite3"条款;
运用一个可施行文件(dll)
产生在:安装。
RemoveApplicationExtension
删除利用程序扩展
只用于Windows 2003从ISAPI扩展中删除ISAPI_RewriteProxy.dll,并从web服务器扩展名列表中删除这个ISAPI扩展名。
IIS6治理元库: IIS:/LM/W3SVC/
1.从治理元库属性 WebSvcExtRestrictionList 中删除"ISAPI_Rewrite3 proxy"条款;
2.从治理元库属性 ApplicationDependencies中删除"ISAPI_Rewrite3 proxy;ISAPI_Rewrite3"条款;
运用一个可施行文件(dll)
产生在:反安装、回滚。
RegisterExtensionInScriptMap
在脚本映射中注册扩展
在IIS治理员库中将ISAPI_RewriteProxy.dl注册为ISAPI扩展来处置*.rwhlp文件扩展名
IIS5,IIS6治理元库: IIS://LM/W3SVC/
运用一个可施行文件(dll)
产生在:安装。
RemoveExtensionFromScriptMap
从脚本映射中删除扩展
从IIS治理元库中移除作为ISAPI扩展、用于处置*.rwhlp文件扩展名的ISAPI_Rewrite.dll的注册信息
IIS5, IIS6治理元库: IIS://LM/W3SVC/
运用一个可施行文件(dll)
产生在:反安装、回滚。
GetServisesStatus
获得服务状态
保留IISADMIN、W2WC、NNTP、SMTP 和FTP 服务的目前状态
新建msi属性: [SERVICES_STATUS]
运用一个可施行文件(dll)
产生在: 安装、反安装。
StartServicesEx
按预设开启服务
依据状态预设来启动ISADMIN、W2WC、NNTP、 SMTP 和 FTP 服务
运用msi 属性: [SERVICES_STATUS]
运用一个可施行文件(dll)
产生在: 安装、反安装。

SaveProductID
保留产品ID
要是要注册产品的话,保留REGISTRATIONNAME和REGISTRATIONCODE的属性值
运用msi 属性: [REGISTRATIONNAME] , [REGISTRATIONCODE];
运用文件: [INSTALLDIR]\ISAPI_Rewrite3\httpd.conf
运用一个可施行文件(dll)
产生在: 安装。
Check32bitMode
检测32位模式
在64位系统中检查32位IIS兼容模式是否可用,从而安装准确的ISAPI筛选器版本。IIS6, IIS7
运用治理元库途径: IIS://LM/W3SVC/AppPools property Enable32bitAppOnWin64;
运用msi 属性:[ENABLE32BITAPPONWIN64]
检查一个32位的利用程序是否能运转在一台安装了64位版本的windows的电脑上。
运用javascript脚本
产生在: 安装。
CheckIISModules
检测IIS模块
在IIS7的机器上检查是否需要安装IsapiFilterModule和IsapiModule模块
IIS7 治理元库途径:
<system.webServer>
<globalModules>
<add name="IsapiModule" image="%windir%\System32\inetsrv\isapi.dll" />
<add name="IsapiFilterModule" image="%windir%\System32\inetsrv\filter.dll" />
</globalModules>
</system.webServer>
运用javascript脚本
产生在: 安装。
AddGlobalIsapiFilter
增加全局ISAPI筛选器
只用于IIS7的机器。这个行为会在IIS治理元库里增加一个命名为ISAPI_Rewrite3的全局ISAPI_Rewrite筛选器
IIS7的治理元库途径:
<configuration>
<system.webServer>
<isapiFilters>
<filters>
<filter name="ISAPI_Rewrite3" path="C:\Program Files\Helicon\ISAPI_Rewrite3\ISAPI_Rewrite.dll" enabled="true" enableCache="false">
</filter>
</filters>
</isapiFilters>
</system.webServer>
</configuration>
运用JavaScript脚本
产生在:安装。
DeleteGlobalIsapiFilter
删除全局ISAPI过滤器
只用于IIS7的机器,这个行为会从IIS治理元库中删除名为ISAPI_Rewrite3的全局ISAPI筛选器。
IIS7的治理元库途径:
<configuration>
<system.webServer>
<isapiFilters>
<filters>
<filter name="ISAPI_Rewrite3" path="C:\Program Files\Helicon\ISAPI_Rewrite3\ISAPI_Rewrite.dll" enabled="true" enableCache="false" >
</filter>
</filters>
</isapiFilters>
</system.webServer>
</configuration>
运用JavaScript脚本
产生在:反安装、回滚。
AddIsapiCgiRestriction
增加ISAPI CGI束缚
Only for IIS7 machines register ISAPI_RewriteProxy.dll as ISAPI extension in IIS metabase.
只用于IIS7的机器,在IIS治理元库中将ISAPI_RewriteProxy.dl为ISAPI扩展
IIS7治理元库途径:
<configuration>
<system.webServer>
<security>
<isapiCgiRestriction>
<add path="C:\Program Files\Helicon\ISAPI_Rewrite3\ISAPI_RewriteProxy.dll" allowed="true" description="Helicon Proxy" />
</isapiCgiRestriction>
</security>
</system.webServer>
</configuration>
运用JavaScript脚本
产生在:安装。
DeleteIsapiCgiRestriction
删除ISAPI CGI束缚
只用于IIS7的机器,从IIS治理元库中删除用作ISAPI扩展的ISAPI_RewriteProxy.dll。
IIS7 治理元库途径:
<configuration>
<system.webServer>
<security>
<isapiCgiRestriction>
<add path="C:\Program Files\Helicon\ISAPI_Rewrite3\ISAPI_RewriteProxy.dll" allowed="true" description="Helicon Proxy" />
</isapiCgiRestriction>
</security>
运用JavaScript脚本
产生在:反安装、回滚。
AddScriptMap
增加脚本映射
只用于IIS7的机器,在IIS治理元库中将ISAPI_RewriteProxy.dll注册为ISAPI扩展用于处置*.rwhlp文件扩展名。
IIS7治理元库途径:
<configuration>
<system.webServer>
<handlers>
<add name="Helicon Proxy" path="*.rwhlp" verb="*" modules="IsapiModule" scriptProcessor="C:\Program
Files\Helicon\ISAPI_Rewrite3\ISAPI_RewriteProxy.dll" resourceType="Unspecified"/>
</handlers>
</system.webServer>
</configuration>
运用JavaScript脚本
产生在:安装。
DeleteScriptMap
删除脚本映射
只用于IIS7的机器,从IIS治理元库里去掉用作ISAPI扩展以处置*.rwhlp文件扩展名的ISAPI_RewriteProxy.dll的注册
IIS7治理元库途径:
<configuration>
<system.webServer>
<handlers>
<add name="Helicon Proxy" path="*.rwhlp" verb="*" modules="IsapiModule" scriptProcessor="C:\Program
Files\Helicon\ISAPI_Rewrite3\ISAPI_RewriteProxy.dll" resourceType="Unspecified"/>
</handlers>
</system.webServer>
</configuration>
运用JavaScript脚本
产生在:反安装、回滚。

3.1根本概念

ISAPI_Rewrite供给了一个基于法则的重写引擎能飞速重写被请求的URL。它支撑险些无穷量的法则和险些无穷量的附加法则前提来供给真正灵活和有效的URL处置机制。可以依据HTTP头、服务器变量、被请求的URL自身以及其它不一样的前提的测试效果来对URL作出处置。
URL数据处置是用一个文本配置文件来定制的,内含各种指令设置。配置分几种品级。首先是全局(服务器范畴的)配置指令,放置在ISAPI_Rewrite安装目录里的一个名为httpd.conf的文件里。那里还有若干个标签可以封装利用到特别位置的指令:<VirtualHost>、<Directory>、<DirectoryMatch>、<Files>、 <FilesMatch>、<Location>以及<LocationMatch>。最后ISAPI_Rewrite支撑可以放在任何网站目录里的.htaccess文件,那些文件中的法则可以利用到该位置以及它的子目录中。所有的配置文件在每次修改文件后都会被主动重载。允许用第三方程序和脚原来修改文件。
在许多状况下ISAPI_Rewrite是用来重写URL的。除了重写以外,ISAPI_REWRITE能够修改、生成、删除任何其它客户端Request中的HTTP头。模块操纵可以载入改写、代理、重定向或者阻断原始客户端到服务器的请求。
Rewriting可能使服务器在得到了一个客户端的源请求时用一个新的URL继续请求处置。新的URL可以包括查询串局部(跟在问号背面),也可以指向任何一个完全的静态文件或者脚本(例如asp)、或者程序(例如.exe),等等。对会员和网站配置来说重写是彻底透明的。由于它Web利用程序收到请求以前在服务器内部施行。
Proxying使URL经过内部处置后指向另一台服务器,并很快通报到长途服务器上(换言之,法则处置在这里中断了)。长途服务器的相应很快被传回客户端。代理服务器要求你指定完备的有效URL,以协定、包括主机名开优等等。ISAPI_Rewrite运用ISAPI扩展来处置代理请求,你可以在“代理服务器配置”这一章里读到更多信息。
Redirection将发送一个带有重定向指令的即时相应(HTTP相应码为302或者说301),将网址设置为一个新的位置。您可以在重定向指令里运用绝对URL格局(这是RFC2616所要求的)将请求重定向到不一样的主机、端口和协定。要是此信息被忽略, ISAPI_Rewrite将主动照目前的协定、服务器名称和目录位置供给URL。重定向指令总是导致重写引擎中断处置背面的法则序列。
每个法则按它在配置文件中涌现的次序来利用。目录级配置文件从父途径开端一个接一个地处置,来自于全局配置文件的法则最先适用。
在修改URL以前ISAPI_Rewrite会保留原URL到Http头,命名为X-Rewrite-URL。然后它能够在脚本中作为HTTP_X_REWRITE_URL服务器变量取回。由于在IIS里,系统变量名不能被修改,所以ISAPI_Rewrite不能供给与Apache兼容的变量名REQUEST_URI。要是你的利用程序的设计要依赖于REQUEST_URI变量,你必须修改它,用HTTP_X_REWRITE_URL变量来取代。下面是一个PHP代码补丁的示例:
if (isset($_SERVER['HTTP_X_REWRITE_URL']))
{
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
}
背面跟有RewriteRule(或者RewriteProxy)指令的多重RewriteCond指令只影响单个法则。要是一些前提需要被用于多个法则,必须反复写这些前提指令以利用到每条法则上。

3.2和Apache下mod_rewrite的兼容性

这个版本的ISAPI_Rewrite是为了最大程度上维持与Apache的mod_rewrite的兼容性。这个指标已经很大程度上实现了,只管有一些功能没法施行,由于它们和Apeach以及UNIX构造高度绑定,而且它们在IIS上施行是不敏感的。举例注明:第H条:“强迫内容处置”标志不能施行,由于在IIS中内容处置的范畴依赖于扩展名。或者第[NS]条:“没有子请求”标志是无心义的,由于在IIS中是没有子请求的。
这里有一个完备的ISAPI_Rewrite和mod_rewrite兼容性图表。标志为绿色的功能或指令是充分支撑的,黄色的功能是局部支撑或规划在下一版本中支撑,标示为红色的功能是不支撑的。
· 兼容Perl的正则表达式 (plus extended syntax)
· 服务器级httpd.conf配置
· 虚拟网站.htaccess配置文件
· 目录.htaccess配置文件
· <VirtualHost>
· <Directory>
· <DirectoryMatch>
· <Files>
· <FilesMatch>
· <Location>
· <LocationMatch>
· AccessFileName
· RewriteEngine
· RewriteRule
o $N 法则后向援用
o %N RewriteCond 后向援用
o ${mapname:key|default}
o %{VARNAME} 服务器变量
o '!' 取非
o [C] 与下一个法则联锁
o [CO=name:val:domain:lifetime:path] 设置cookie
o [E=var:val] 设置环境变量
o [F] 强迫制止应对
o [G] 强迫继续应对
o [H=content-handler] 明白的内容处置 (不适用)
o [L] 上一个法则标志
o [N] 再次利用法则
o [NC] 大小写不敏感
o [NE] 不转义输出
o [NS]非内部子请求
o [P]代理通过
o [PT] 通报通过下一个处置程序 (不断开启)
o [QSA] 追加查询字符串
o [R =code] 重定向
o [S=num] 跳到下面第 n条法则
o [T=MIME-type] 强迫明白应对 MIME 类型
· RewriteCond
o [NC] 大小写不敏感
o [OR] 逻辑并集
o %{HTTP:header}
o '!' 非
o '<CondPattern' 大于比较符
o '>CondPattern' 小于比较符
o '=CondPattern' 等于比较符
o '-d' 目录存在
o '-f' 文件存在
o '-s' 非零文件
o '-l' 符号链接
o '-x' 有可施行权限的文件
o '-F' 通过子请求文件存在
o '-U' 通过子请求URL存在
· RewriteBase
· RewriteMap
o txt: 文本映射
o rnd: 随机映射
o int: 内部函数 toupper, tolower, escape, unescape
o prg: 外部程序
o dbm: 散列文件
· RewriteLog
· RewriteLogLevel
· RewriteOptions
· RewriteLock
· AllowOverride
3.3运用环境以及处置次序
下列是这个程叙文档中要被用到的运用环境的详解:
server config
这个标记表示该指令可以用在全局httpd.conf配置文件中,但是不能用在任何一个分区(例如<Virtualhost>或者<Directory>)内部。它不允许放在.htaccess文件中。
vitrual host
这意味着指令可以涌现在<VirtualHost>容器内。
directory
这个标记表示指令在<Diretory>、<Location>、<Files>容器内可用,而且它们的正则表达式是等价的。
.htaccess
运用环境标为它的指令可以涌现在每个目录的.htaccess文件中。记住当RewriteRule指令用在.htaccess配置文件中时,它将主动从途径中剥去当地目录前缀,只对剩下的局部利用法则。你可以运用RewriteBase指令显式地给这些法则指定一个根本途径。
利用顺序
当统一分区内的多条指令同时适用时,了解每个分区利用的顺序是很重要的,由于它会对终究结果起作用。利用顺序如下所述:
1.<Directory>(正则表达式除外):多个<Directory>分区可以利用于单个请求,要是多个(非正则表达式)<Directory>分区匹配了包含文档的这个目录(或者它的上级目录中的一个),则按照从短到长的匹配顺序利用指令。
2..htaccess文件按父目录到子目录的次序利用。
3.<Files>和<FileMatch>同时被施行。
4.<Location>和<LocationMatch>也同时被施行。
先利用虚拟主机外面定义的响应分区和指令,再利用<VirtualHost>分区中的分区和指令。统一工夫只要一个<VirtualHost>分区可以利用给请求。较晚的分区优先于较早的那些。
3.4正则表达式
正则表达式语法指南是Rege++文档的一局部,由John Maddock博士友谊供给,Copyright ?1998-2004,包含在《Boost license》这本书里。完备的语法注明可以在《Boost.Regex documentation》中找到。
字面值
所的字符都是字面值,除了“.”“*”“?”“+”“(”“)”“{”“}”“[”“]”“^”和“$”。当这些字符由“\”前导时也是字面值。一个字面值是个匹配它本人的字符。
通配符
点字符“.”匹配空字符和换行符之外的任何单个字符。
反复
反复是被反复任意次数的表达式。一个表达式跟着“*”可以被反复任意次数,包括反复零次。一个表达式跟着“+”可以被反复任意次数,但是至少反复一次。一个表达式跟着“?”可以被只反复零次或者一次。当需要明白指定反复的最低次数和最高次数时,可以用限制运算符“{}”。这样“a{2}”是字母“a”反复两次。“a{2,4}”表示字母“a”反复2到4次。“a{2,}”表示字母“a”反复2到无穷屡次。注意“{}”里面必须没有空格。而且它没有对上限值和下限值限制范畴。所有的反复表达式参考尽可能短的前子表达式:一个独自字符,一个字符集,或者一个用“()”括起来的子表达式,举几个例子:
? "ba*"匹配所有的"b","ba","baaa" 等等。
? "ba+"匹配"ba"或"baaa",但是不匹配"b"。
? "ba?"匹配"b"或者"ba"。
? "ba{2,4}"匹配"baa","baaa","baaaa"。
懒散型反复
在反复之后附加一个“?”就是懒散型的反复了。一个懒散型的反复是指匹配尽可能短的字符串。
例如:匹配HTML标志对可以运用下面这样的正则表达式:
"<\s*tagname[^>]*>(.*?)<\s*/tagname\s*>"
在这种状况下$1将包含标签对之间的文本,而且是最短的匹配字符串。
插入成份
插入成分有两个用场——把项目编组到子表达式中,并且对生成的匹配标号。例如,表达式"(ab)*"将匹配所有的这类字符串"ababab"。所有的被插入成份标号的子匹配将可以用\N或者$N语法来回溯援用到。它允许子表达式匹配空字符串,子表达式以1为开端从左往右编号。子表达式0就是整个表达式。

正则表达式


无标志插入

有时候你需要把子表达式编组为插入成份,但是不想为这个插入成分而吐出另一个标志的子表达式。在这种状况下,一个非标志插入(?:expression)可能有用。例如,下例表达式可以新建一个非子表达式:
"(?:abc)*"
N择1标志

当表达式可以匹配一个子表达式或另一个的时候,N择1标志起作用了。每个N择1可以用|隔开。每个N择1标志是一个最大可能性前缀子表达式,它是和反复操纵符相反的行为。
示例:
? "a(b|c)"匹配"ab"或"ac"
? "abc|def"匹配"abc"或"def"
预置符
一个预置符是一个可以匹配所有作为预置成员的单个字符的预置。预置字符用方括号“[”和“]”括起来,可以容纳字面值、字符序列、字符类、经整理过的对象以及等价的类。用^打头的预置声明可以排除包含的内容。
示例:
字面值
? "[abc]"匹配"a"或"b"或"b"。
? "[^abc]"匹配"a"和"b"和"c"以外的所有字符。
字符序列
? "[a-z]"匹配所有的从"a"到"z"的字符
? "[^A-Z]"匹配所有的字符除了从"A"到"Z"的这些字符。
字符类
字符类用语法"[:classname:]"来表示,classname是声明过的预设值中的一个。例如:"[[:space:]]"是所有的空白占位符的预设。下表中的字符类是可用的:

 

alnum 所有的alpha数字字母
alpha 字母表字符[a-zA-Z]。其它字符也可以包含在内,这取决于当地环境
blank 所有的空白字符,包含回车或者空格
cntrl 所有的控制字符
digit 从0到9的数字
graph 所有的图画字符
lower 所有的小写字母[a-z],其它的字符也可以包含在内,这取决于当地环境
print 所有的印刷字符
punct 所有的标点符号
space 所有的空白占位符
upper 所有的大写字母[A-Z],其它的字符也可以包含在内,这取决于当地环境
xdigit 所有的16进字字符0~9,A-F
word 所有的词汇字符,包括字母数字外加underscore
unicode 所有的编码大于255的字符,这只对大范畴字符特征类生效

这里有一些缩写法可以取代以上字符类:
? \w 取代 [:word:]
? \s 取代 [:space:]
? \d 取代 [:digit:]
? \l 取代 [:lower:]
? \u 取代 [:upper:]

正则表达式

汇合元素
汇合元素个别采纳预置声明内加[.tagname.]的格局。其中tagname既可以是一个单个字符,也可以是一个汇合元素名。例如:[[.a.]]等价于[a],[[.comma.]]等价于[,]。ISAPI_Rewrite支撑所有的规范POSIX汇合元素名,以及下面的这些字符组合:“ae”、“ch”、“ll”、“ss”、“nj”、“dz”、“lj”、任意小写、大写、首字母大写的变化组合。多个字符汇合元素可以导致预置匹配一个以上的字符。例如:[[.ae.]]将匹配两个字符,但是[^[.ae.]]只会匹配一个字符。
等价类
等价类个别采纳预置声明内加[=tagname=]的格局,其中tagname既可以是单个字符,也可以是一个汇合元素的名称,它能匹配一样的主要等价类成员的字符,就跟汇合元素[.tagname.]同样。一个品级类是一个雷同整理的字符预设,但主如果一个等价类的字符集,其主要排序要害字都是同样的(例如,字符串平常先依字符整理,然后依据重音,然后依据大小写。主要排序键与字符相干,次要与重音相干,再次与大小写相干。要是没有等价类相符tagname,则[=tagname=]是与[.tagname.]完全同样的。
Equivalence classes take the general form [=tagname=] inside a set declaration, where tagname is either a single character, or a name of a collating element, and matches any character that is a member of the same primary equivalence class as the collating element [.tagname.]. An equivalence class is a set of characters that collate the same, a primary equivalence class is a set of characters whose primary sort key are all the same (for example strings are typically collated by character, then by accent, and then by case; the primary sort key then relates to the character, the secondary to the accentation, and the tertiary to the case). If there is no equivalence class corresponding to tagname, then [=tagname=] is exactly the same as [.tagname.].
要在一个预设中包含字面值“-”,请这样做:使它成为开放的“[”或者“[^”背面的第一个字符、一个系列或者一个汇合元素的末点,或者用一个前置的转义字符如“[\-]”。要在一个预设中包含一个字面值“[”或者“]”或者“^”,请把它们作为一个系列或者一个汇合元素的末点,或者用一个前置的转义字符。
行锚
锚用来匹配一行开头或结尾的空串。“^”匹配行开头的空串,“$”匹配行结尾的空串。
回溯援用
回溯援用是援用前面已经被匹配的子表达式。这个援用是被匹配的子表达式,而不是表达式自身。回溯援用包括转义字符“\”跟着一个从1到9的数字。“\1”援用第一个子表达式,“\2”援用第二个,顺次类推。举个例子,表达式“(.*)\1”匹配任何对于它的中点反复的字符串,比方说“abcabc”或者“xyzxyz”。一个对子表达式的回溯援用不加入任何匹配,匹配空字符串。在ISAPI_Rewrite中,所有的回溯援用是对整个RewriteRule和响应的RewriteCond指令是全局性相干的。RewriteRule指令中要是有RewirteCond子令的话,子匹配从响应的RewriteRule指令的第一个RewriteCond指令开端从上到下从左往右编号。
向前查找
向前查找有两种情势:正向前查找和负向前查找。
• "(?=abc)"匹配跟在表达式"abc"背面的零字符。
• "(?!abc)"匹配不跟在表达式"abc"背面的零字符。
通配符
下面的运算符供给了与GNU正则表达式库的兼容性。
• "\w"匹配任意单个组词字符,它等价于表达式“[[:word:]]”。
• "\W"匹配任意一个非组词字符,它等价于表达式“[^[:word:]]”。
• "\<"匹配词头空字符串。
• "\>"匹配词尾空字符串。
• "\b"匹配词头或者词尾空字符串。
• "\B"匹配词语中的空字符串。
转义字符
转义字符“\”含有多重意义:
• 转义字符可以指导一个运算符,例如:回溯援用、词操纵符
• 转义字符可以使下面的字符正常,比方说“\*”代表一个字面值“*”,而不是反复运算符。

单个字符转义序列
下面的转义序列是单个字符的又名:

 

转义序列 字符代码 含义
\a 0x07 信号铃记号.
\t 0x09 制表符
\v 0x0B 垂直制表符
\e 0x1B ASCII转义字符
\0dd 0dd 八进制字符代码,其中dd是一个或多个八进制数字。
\xXX 0xXX 十六进制字符代码,其中XX是一个或多个八进制数字。
\x{XX} 0xXX 十六进制字符代码,其中XX是一个或更多十六进制数字,可选用Unicode字符。
\cZ z-@ ASCII转义序列control-Z,其中Z是任意一个编码大于或等于“@”的编码的ASCII字符。

杂项转义序列
下列供给perl的大局部兼容性,但是在\l、\L、\u和\U上有一些区别

转义序列 含义
\w 等价于 [[:word:]].
\W 等价于[^[:word:]].
\s 等价于[[:space:]]。
\S 等价于[^[:space:]]。
\d 等价于[[:digit:]]。
\D 等价于[^[:digit:]]。
\l 等价于[[:lower:]]。
\L 等价于[^[:lower:]]。
\u 等价于[[:upper:]]。
\U 等价于[^[:upper:]]。
\C 任何单个字符,等价于“.”
\X 匹配任何Unicode组合字符序列,例如“a\x0301”(字符a和一个尖角)
\Q 开端引号运算符。背面跟前的所有的内容都被当作字面值,直到发明一个\E完毕运算符。
\E 完毕援用运算符,终止一个由\Q开头的援用序列。

如何得到匹配
正则表达式将匹配第一个可匹配字符串。要是从给定的起始处可以匹配到不止一个字符串,则它会匹配那个能匹配得最长的字符串。要是从统一个起始处有多个合适的匹配,而且每个匹配的长度都同样,则将选中那个第一子表达式匹配得最长的匹配。要是有两个以上的匹配字符串它们的第一子表达式匹配得同样长,则比较第二子表达式匹配的长度,如此类推。注意:ISAPI_Rewrite运用比封演算法。只要表达式匹配了整个次序串才能得到匹配效果。例如:
• RewriteCond URL ^/somedir/.* #将匹配任何导向somedir目录以及它的子目录的请求,与此同时,
• RewriteCond URL ^/somedir/ #只匹配somedir根目录的请求。
对“病态”正则表达式的特殊提醒:
ISAPI_Rewrite 运用了一个非常强大的来自Boost库的正则表达式引擎。但是它仍然有一些局限性:有着一些“病态”的表达式,它可能会指数级地耗损匹配工夫。这些都波及到嵌套反复运算符,例如试图对N个陆续字母a匹配表达式“(a*a)*b”,耗损的工夫将与N2成正比。这些表达式常常能改成另一种写法来以免这种题目。例如,“(a*a)*b”可以被改写成“a*b”,解析它耗损的工夫与N成正比。在多数状况下,非嵌套反复表达式耗损的工夫与N2成正比,但是,要是条目是彼此排挤的,则它们会在线性工夫里完成匹配。在“a*b”这种状况下,每个字符将要末匹配a要末匹配b或者不匹配。相较之下,“a*a”匹配器不能奉告哪个分支被采取(第一个 a还是第二个a)因而必须尝试两种。
Regex可以检测出这种“病态”的正则表达式并终止和它们的匹配。这将使ISAPI_Rewrite的法则失效。当一个法则失效时,ISAPI_Rewrite将给客户端发送一个"Internal Server error - Rule Failed"的状态,以表示配置差错。

4.1AccessFileName指令

 

注明 设置散布式配置文件的名称
语法 AccessFileName filename [filename] ...
默许值 AccessFileName .htaccess
运用环境 server config

指定一个ISAPI_ReWrite追求散布式配置的文件名列表。默许文件名是.htaccess。ISAPI_ReWrite只能载入它能在这个列表中找到的第一个文件。默许状况下ISAPI_ReWrite治理者会以hidden属性标志配置文件-它将防止文件被长途会员直接访问到。
要是配置文件进行了任何修改,它将在下次请求服务器时主动加载。

4.2AllowOverride指令

 

注明 明白规定了每个目录重写的基准URL。
语法 AllowOverride All|None|directive-type [directive-type] ...
默许值 AllowOverride All
运用环境 server config, virtual host, directory

这个指令声明了在散布式.htaccess文件里的指令是否可以遮盖父级别的httpd.conf中的指令。在ISAPI_Rewrite的运用环境中,这个指令现实上控制了特定虚拟主机或者目录的.htaccess文件的可用或者不可用。当前只支撑三个值:AllNoneFileInfo
AllFileInfo使.htaccess文件以及它里面的整个ISAPI_Rewrite目录可用,None使所有的.htaccess文件以及目录不可用。这些目录拥有继承性。这意味着要是你为一些目录或者虚拟主机指定AllowOverride none,.htaccess文件将对整个子目录树不可用。

4.4RewriteRule指令

 

注明 定义URL重写法则
语法 RewriteRule Pattern Substitution [flags]
运用环境 server config, virtual host, directory, .htaccess

这个指令定义了单个URL重写操纵。它可能在一个配置文件中涌现屡次,每个实例定义一个重写URL的法则。RewriteRule指令包含URL匹配模式、替代字符串以及可选的标记设置。
Pattern(模式)是一个用来匹配目前URL的Perl兼容正则表达式。目前的URL可以是本来请求的URL或者已经由优先级高的法则替改正的URL。网址从不包含协定或者主机名,从第一个斜杠字符开端(只对httpd.conf文件适用)。而且目前网址还因不一样的利用配置级别而异。关于目录级配置(.htaccess文件),结尾的斜线和配置文件的目录名,会在匹配时被从URL中忽略掉。在新建正则表达式时,请浏览这个文档的正则表达式语法局部来得到更多的信息。
"!"字符打头的模式将否认整个表达式。否认模式不能发生子匹配,所以你不能运用$N的替换援用。
Substitution(替代)字符串指定了模式是匹配时生成URL的格局字符串。除了纯文本,它可以包括这些特别字符。
• 对Rewrite模式的回溯援用 $N
• 对Rewrite模式的回溯援用 %N
• 服务器变量 %{VARNAME}
• 前提格局模式 ?Ntrue_string:false_string
• 分组括号“(”和“)
替代字符串将所有的字符视为字面值,除了$'、'\'、'('、')','?',':'和'\'。为了字面化地读出特别字符,它定义了用"\"指导的转义字符。下面的特别字符是允许的。

$& 输出匹配的整个表达式。
$` 输出上一个的匹配完毕到目前匹配的开端之间的文本(要是以前没有找到匹配串,则输出从开头到目前匹配的开端之间的文本)。
$' 输出目前匹配之后跟着的所有文字。
$$ 输出字面值$
\a 信号铃字符
\f 表单反应字符
\n 新行字符
\r 回车符
\t 制表符
\v 垂直制表符
\x 十六进制字符,比方说\x0D.
\x{} 一个可能的Unicode十六进制字符-例如\x{1A0}
\cx ASCII的转义字符x,例如\c @等价于escape-@。
\e The ASCII 转义字符
\dd 八进制字符常量,例如\10。
\l 导致下一个字符被小写输出。
\u 导致下一个字符被大写输出。
\L 导致整个后继字符串被小写输出,直到碰到\E。
\U 导致整个后继字符串被大写输出,直到碰到\E。
\E 完毕\L或者\U的后续字符串
\\ 单个反斜杠字符'\'

RewriteRule从父配置文件开端按照在配置文件中涌现的顺序利用。每个法则只要在它的Pattern匹配了一个URL而且所有连贯前提(RewriteCond)都匹配时才会被利用。在该URL用Substitution完成替代之后,重写历程还在继续,不断到配置文件完毕或者碰到一个用了任何休止标记的法则。在Substitution中的特别字符串"-"(短横)意味着没有替代,而且当你需要利用该法则并留下的原始的未被问鼎过的URL时它是很有用的。
此外,这里有一个支撑的flag(标记)列表。这些标识可以转变法则的体现。与Apache完全兼容的标记被标志为绿色,不支撑的标记被标志为绿色,只在 ISAPI_Rewrite中被支撑的标识被标志成黄色。
CU (Case Upper)
把替代字符串改成大写.
CL (Case Lower)
把替代字符串改成小写.
chain|C
将目前法则与后一条法则链接起来,后一条法则只要在目前法则被匹配的状况下才能被施行。链接可以再后续链接。
cookie|CO=NAME:VAL:domain[:lifetime[:path]]
设置一个有指定字段的cookies头,并把它和目前请求的相应一起发送到客户端。
env|E=VAR:VAL
不支撑,在UNIX环境中设置一个环境变量,在Windows系统中无心义。
forbidden|F
发送即时403 FORBIDDEN相应到客户端,休止这个请求的法则处置以及所有其他的替代处置。
gone|G
发送一个即时401Gone相应到客户端,休止这个请求的法则处置以及所有其他的替代历程。
handler|H=Content-handler
不支撑,为请求明白指定了处置处置。在IIS的天下中这是可以通过重写请求的文件扩展名来实现。但是没有从Apache处置到IIS文件扩展名的直接转换要领。
last|L
休止这里的重写处置,不再利用目前配置文件中的其它法则。在这种状况下,后代的.htaccess文件仍然能被用到。
loop|LP
在一个轮回中反复运转目前单个法则直到它的模式以及前提不再被匹配了。轮回次数被限制为200免得堕入无穷轮回。
next|N
从目前配置文件开端处反复运转重写处置。轮回次数被限制为200免得堕入无穷轮回。
nocase|NC
这个标志使Pattern大小写不敏感。
noescape|NE
不转义输出。在ISAPI_Rewrite默许状况下,在输出中会把所有的非ANSI字符编码为十六进制数%xx。
nosubreq|NS
这个标识在ISAPI_Rewrite中与在Apache中含义不一样。精准的转换是不可能的,但这个标记可能依然是有用的。每当配置文件处置完成之后,URL被重写了,ISAPI_Rewrite将启动这个新的URL处置历程(与Apache雷同)使它可以利用到另一个配置文件中。此标识意思是该法则只针对初始会员的请求施行,不针对已被重写过的请求施行,以防可能涌现的轮回。ISAPI_Rewrite限制轮回反复次数为10。
nounicode|NU
要是设置了NU标志,从Unicode转换为UTF - 8将不会产生。所有Unicode字符会维持它的%xx格局不变。
O (nOrmalize)
留着用于与ISAPI_Rewrite 2.x兼容。要是运用了RewriteCompatibility2,这个指令在处置以前将URL标准化。标准化包括移除一个URL编码、差错字符,等等。同时URL的标准化将完全移除它的查询字符串。要是RewriteCompatibility2 没有被运用,URL按照默许被标准化(就犹如它在mod_rewrite中所做的),此标记的含义将反转。
proxy|P
将效果URL强迫内部处置为另一台服务器上的指标,并即时传到长途服务器上,并且,法则处置在这里中止了。长途服务器的相应将被通报回客户端。proxy需要您指定完备的URL,由协定、主机名称等开头。ISAPI_Rewrite运用ISAPI扩展来处置代理请求。你可以在代理配置章节中浏览到更多有对于此的内 容。
passthrough|PT
不支撑或者始终支撑。在IIS中效果始终通报到下一个处置
qsappend|QSA
追加目前查找串的数据到替代串而不是由一个替代字符串代替它。当你需要在保存本来的参数再增加更多的查询字符串参数时,可以运用它。
redirect|R [=code]
强迫服务器用重定向指令给客户端发送一个即时相应,供给一个新的接替位置。可以选加前缀http://thishost[:thissport]/从而把URL带到一个可用的绝对情势。要是没有给出代码,将运用一个302相应(暂时性移动)。你可以选中在3XX系列范畴内指定任何代码。
skip|S=num
要是目前的法则匹配,强迫rewrite引擎跳过背面num个法则。
type|T=MIME-type
强迫指标文件的MIME类型转换成被设定的MIME类型。这能够被用来依据一些前提设置内容类型。
U (Unmangle log)
无损记载。记载它本来请求的网址,而不是被重写的URL。

4.5RewriteCond指令

 

注明 为下列的RewriteRule定义一个前提
语法 RewriteCond TestString CondPattern
运用环境 server config, virtual host, directory, .htaccess

该指令为背面的RewriteRule,RewriteHeader或RewriteProxy指令规定了一个前提。一个法则指令前可以有一个或多个前提,法则只要在所有前提得到知足的状况下才被利用。
TestString附加到纯文本可以包含以下构造。
• 用语法$N回溯援用RewriteRule模式
• 用语法%N回溯援用前面的RewriteCond模式
• 用语法${mapname:key|default}扩展RewriteMap
• 用语法%{HTTP:header}指代HTTP头值
• 用语法%{NAME_OF_VARIABLE}指代服务器变量
下列是可用的服务器变量列表:

HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT
REMOTE_ADDR
REMOTE_HOST
REMOTE_PORT
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
DOCUMENT_ROOT
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
HTTPS
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
另外,所有的IIS特有的变量都是支撑的。

CondPattern指定一个利用于TestString实例的正则表达式,下列特别值也支撑:
1.在正则表达式前头加“!”符号指明否认模式。
2.'<CondPattern'将CondPattern作为一个纯字符串按字典次序比较,效果比较大
3.'>CondPattern'按字典次序比较,效果比较小
4.'=CondPattern'按字典次序比较,效果相称
5.'-d' 检测字符串是否存在目录。
6.'-f' 检测字符串是否存在文件。
7.'-s' 检测字符串是不是一个非零大小的文件。
8.'-l' (链接) 不支撑的,始终为false。
9.'-x' (具有可施行权限) 不支撑的,始终为true。
10.'-F' (存在的文件,通过子请求) 不支撑,和'–f'同样。
11.'-U' (存在的URL,通过子请求) 不支撑的,始终为false。
下面的标志也是支撑的:
'nocase|NC'
这个标志使模式大小写不敏感。
'ornext|OR'
这个标志用逻辑或而不是隐含的逻辑与联合子请求RewriteCond指令。
O
留用于ISAPI_Rewrite 2.x的兼容性。在处置前标准化字符串。标准化包括移除一个URL编码、差错字符,等等。同时URL的标准化将完全移除它的查询字符串。

4.6RewriteBase指令

 

注明 为每个目录的重写设置一个基准的URL
语法 RewriteBase URL-path
默许值 RewriteBase requested-directory-path
运用环境 directory, .htaccess

当RewriteRule指令用于每个目录的配置文件(.htaccess)时,它将主动从途径中剥去当地目录前缀,只对剩下的局部利用法则。RewriteBase指令允许你为这些法则精准指定一个基准。比方,哪局部要被剥离。
和Apache的mod_rewrite不一样,ISAPI_Rewrite的访问不仅仅针关于物理途径,同时还针关于虚拟途径,而且可以主动地选中准确的基准。所以这个指令只是为了兼容性缘由而被保存的。
URL-path可以是相关于根的途径也可以是空,空的URL-path意味着法则的基准等同于网站的根目录。

4.7RewriteProxy指令

 

注明 代理请求到一个长途服务器
语法 RewriteProxy Pattern Substitution [flags]
运用环境 server config, virtual host, directory, .htaccess

使效果URL被内部处置为另一台服务器上的指标,并即时通报到长途服务器,从此中止了法则处置。长途服务器的相应将被通报回客户端。代理要求您指定完备的URL,由协定,主机名称等开头。ISAPI_Rewrite运用ISAPI扩展来处置代理请求。你可以在配置代理的章节里浏览到更多。
语法和操纵符与RewriteRule指令是雷同的。但是RewroteProxy指令支撑一些额外的标志。
H (preserve Host)
代理模块在连贯长途服务器时将运用随着源请求一起发送过来的主机头,要是没有这个标记代理服务器则将用主机名和长途服务器的端口号组成主机头。
A (Add authentication headers)
允许从代理服务器将一个认证信息通报到局域网服务器上,当客户端认证和代理服务器冲突时它很有用。服务模块将对一个请求的服务器变量

AUTH_TYPE,
AUTH_USER,
LOGON_USER,
REMOTE_USER

追加响应的头

X-ISRW-Proxy-AUTH-TYPE,
X-ISRW-Proxy-AUTH-USER,
X-ISRW-Proxy-LOGON-USER,
X-ISRW-Proxy-REMOTE-USER

到被代理的服务器。
CR (use Credentials)
代理模块将尝试用在URL中指定的证书身份验证登录长途服务器,或者用根本身份验证头登录长途服务器。用了这个标记,你可以在一个替代字符串中运用http://user:password@host.com/page语法作为一个URL。

4.8RewriteHeader指令

 

注明 重写任何请求的HTTP头
语法 RewriteHeader HeaderName: Pattern Substitution [flags]
运用环境 server config, virtual host, directory, .htaccess

这个RewriteHeader指令是RewriteRule指令中的一个很常用的变量。而且它被设计用来重写客户端的URL局部以及HTTP头的局部。技术上的RewriteRule指令,相当于RewriteHeaderURL Pattern Substitution [flag]。这个指令可用于在IIS里更多利用程序的处置以前重写、新建或者删除任何客户端请求的HTTP头。
HeaderName:指定将被重写的HTTP头的名字。
patternSubstitutionflag与RewriteRule指令中都是雷同的。

4.9RewriteMap指令

 

注明 为一个映射函数值定义一个键
语法 RewriteMap MapName MapType:MapSource
运用环境 server config, virtual host, directory, .htaccess

RewriteMap指令被用来定义一个键到值的查找功能。当你需要映射大量的值时,它会很有用的,而且它的速度远远快过用法则匹配来做到它。映射功能的机能挨映射文件的大小影响微乎其微。有三品种型的映射:
txt:用一个文本文件映射
rnd:从多个可选项中发生随机值
int:内部函数
MapName是这个映射功能的名字,在RewriteRule下令中被用来指定这个映射。请确保每个映射用独一的名称定义。你可以运用下列语法在RewriteRule指令的Substitution参数中调用映射功能

${ MapName : LookupKey | DefaultValue } 

要是这个构造是在Substitution中涌现,ISAPI_Rewrite将在映射中查找这个键,万一找到了一个,就用它的值替代这个构造。要是什么值也没有被找到,将用可选的DefaultValue。要是没有指定DefaultValue,它将用一个空串替代。
下面的标记也是支撑的:
‘nocase|NC'
这个标记使该查找键大小写不敏感。
下面是一个大小写不敏感映射文件指令的示例

RewriteMap examplemap txt:C:/path/to/file/map.txt [NC]

MapSource文件的途径,既可以是绝对地址也可以是相对地址。相对地址将被从目前配置的文件夹开端推算,换言之,就是从这个定义映射的配置文件的途径开端推算。
然后你可以在RewriteRule中如下运用这个映射:

RewriteRule ^/ex/(.*) ${examplemap:$1}

以下MapTypeMapSource的组合是可用的:
txt:纯文本映射,它的source是到一个可用的文本文档的windows文件系统途径。文本文档必须是如下格局的:

#This is a comment
key1 value1 #Another comment
key2 value2
keyN valueN

rnd:随机查找多个值。Source是一个文本文档的途径,文本文档必须是下列格局:

#This is a comment
key1 value1|value2|value3
key2 value4|value5|value6|valueN

int: 调用内部函数。 Source必须是以下预定义的内部函数之一:
toupper: 转换要害词为大写情势。
tolower:转换要害词为小写情势。
escape:把特定字符编码为十六进制。
unescape:把十六进制值编译为特定字符。

4.10RewriteLog指令

 

注明 设置ISAPI_Rewrite日志文件的名称
语法 RewriteLog file-path
默许值 RewriteLog installdir\rewrite.log
运用环境 server config

这个指令用来设定记载ISAPI_Rewrite行动的日志文件的文件名。示例:

Rewritelog "C:\local\path\rewrite.log"

4.11RewriteLogLevel指令

 

注明 设置日志级别
语法 RewriteLogLevel Level
默许值 RewriteLogLevel 0
运用环境 server config

这个指令设置日志的输出长度。默许值0表示不记日志,而最大的级别9则表示所有的行动都要记载。
运用运用较高的级别值可能会降低ISAPI_Rewrite的操纵速度。我们倡议你当你完成法则调试之后,通过设置日志级别为零来禁用日志。

4.12RewriteOptions指令

 

注明 指定特别选项
语法 RewriteOptions Options
运用环境 server config, virtual host, directory, .htaccess

这个指令可认为ISAPI_Rewrite设置特定选项。目前只要惟一一个选项可用:inherit
inherit:强制目前配置从父级继承所有的选项和法则。这意味着来自父级配置的所有的法则将被再次施行,除非目前环境另有响应重写法则。

4.13RewriteCompatibility2指令

 

注明 启用或禁用ISAPI_Rewrite 2.x兼容模式
语法 RewriteCompatibility2 on|off
默许值 RewriteCompatibility2 off
运用环境 server config, virtual host, directory, .htaccess

这一指令将激活与ISAPI_Rewrite 2.x版的兼容性,将一些2.X的法则准确地翻译为3.0版本的语法。这并不意味着ISAPI_Rewrite 3将开端懂得不经修改旧的语法。要是您有针对ISAPI_Rewrite 2.X的旧设计请运用ISAPI_Rewrite供给的翻译工具将这些旧法则转化为新的语律例则。
此刻通过设置指令RewriteCompatibility2独一转变的是,它将关闭网址通例前缀并删除查询字符串。 Apache的mod_rewrite将删除匹配的URL的查询字符串的这局部,相较之下ISAPI_Rewrite 2.X将匹配整个网址(包括查询字符串在内),而且[O]标志的意思将由该指令倒置。

4.14ErrorLog指令

 

注明 个别的差错文件的位置
语法 ErrorLog file-path
默许值 ErrorLog installdir\rewrite.log
运用环境 server config

这个指令设置寄存ISAPI_Rewrite整体差错和新闻的日志文件的名称。例如httpd.conf file load, .htaccess file load,等等
例:ErrorLog "C:local\path\error.log"

4.15LogLevel指令

 

注明 设置个别的差错的日志级别
语法 LogLevel Level
默许 LogLevel warn
运用环境 server config

这个指令设置个别日志的输出长度,跟它的重写历程无关。这里有一个level的可用值列表:emerg、alert、crit、error、warm、notice、info、debug。目前的ISAPI_Rewrite日志只记载差错信息。
设置LogLevel调试来解决配置文件中加载的题目。

4.16<VirtualHost>指令

 

注明 把利用于特定IP地或者主机的指令编组
语法 <VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>
运用环境 server config

<VirtualHost> ... </VirtualHost>标签用来对利用到特定虚拟主机里的指令进行分组。
addr的可用值为:
• 特定的IP地址
• 完备的域名
• 字符'*'可以匹配任何主机或者特定服务器的任何端口号。
例如:

RewriteEngine off
AllowOverride none
<VirtualHost onesite.com www.onesite.com>
RewriteEngine on
AllowOverride all
</VirtualHost>

不要忘了在每个<VirtualHost>标签中包含RewriteEngine on指令,也不要将不能利用的法则封装进去。

4.17<Directory>指令

 

注明 将适用于特定的文件系统的目录和子目录的指令编组
语法 <Directory directory-path> ... </Directory>
运用环境 server config, virtual host

<Directory> ... </Directory>标签被用来对利用到特定文件系统目录以及子目录的指令进行分组。通配符?和*是可用的。正则表达式也是可用的,需要以~字符打头。
对目录途径参数必须当心:它们必须字面匹配用来访问文件的文件系统途径,用于某一特定<Directory>的指令并不适用于来自统一目录下通过不一样的途径的文件访问,例如通过不一样的符号链接。只要完备的文件途径是被允许运用的。
示例:

<Directory C:/inetpub/>
AllowOverride None
</Directory>
<Directory C:/inetpub/home/>
AllowOverride FileInfo
</Directory>
<Directory ~ "C:/inetpub/wwwroot/.*/[0-9]{3}">
# ... directives here ...
</Directory>

不要忘了在每个<Directory>标签中包含RewriteEngine on指令,也不要将不能利用的法则封装进去。

4.18<DirectoryMatch>指令

 

注明 将适用于特定的文件系统的目录和子目录的指令编组
语法 <DirectoryMatch regex> ... </DirectoryMatch>
运用环境 server config, virtual host

<DirectoryMatch> ... </DirectoryMatch> 被用来封装一个只适用于指定的文件系统的目录和子目录的指令组。这个指令和<Directory ~> 语法雷同。
示例:

<DirectoryMatch "^/www/(.+/)?[0-9]{3}">
# ... directives here ...
</DirectoryMatch>

不要忘了在每个< DirectoryMatch>标签中包含 RewriteEngine on指令,也不要将不能利用的法则封装进去。

4.19<Files> 指令

 

注明 将利用于匹配文件名的指令包装起来
语法 <Files filename> ... </Files>
运用环境 server config, virtual host, directory, .htaccess

<File>指令以文件名限制了封装的指令的作用域。filename参数必须包含一个文件名,支撑?和*以及以~字符打头的正则表达式。
示例:

<Files index.*>
# ... directives here ...
</Files>
<Files ~ "\.(gif|jpe?g|png)$">
# ... directives here ...
</Files>

不要忘了在每个<Files>标签中包含RewriteEngine on指令,也不要将不能利用的法则封装进去。

4.20<FilesMatch>指令

 

注明 将利用于匹配文件名的指令包装起来
语法 <FilesMatch regex> ... </FilesMatch>
运用环境 server config, virtual host, directory, .htaccess

<FilesMatch>指令的语法和_指令"><Files ~>语法完全同样。

<FilesMatch "\.(gif|jpe?g|png)$"> 

不要忘了在每个<FilesMatch>标签中包含RewriteEngine on指令,也不要将不能利用的法则封装进去。

4.21<Location>指令

 

注明 把被包装起来的指令集利用到匹配的URL或者虚拟途径
语法 <Location URL-path|URL> ... </Location>
运用环境 server config, virtual host

<Location> ... </Location>标签用来将利用到特定URL或者虚拟途径的指令分组。<Location>将运算符完全从文件系统中分划出来,因而那些指令将不会用来控制对文件文件系统位置的访问。由于有几个不一样的URL可能映射到雷同的文件系统位置。
URL-path是一个情势为“/path/”的虚拟途径。没有协定、主机名、端口号、查询请求字符串被包含在内。URL-path可以包含通配符?和*或者以~字符打头的正则表达式。
示例:

<Location /directory>
# ... rules go here
</Location>
<Location />
# ... more rules go here
</Location>

不要忘了在每个<Location>标签中包含RewriteEngine on指令,也不要将不需要用到的法则封套进去。

4.22<LocationMatch>指令

 

注明 把被包装起来的指令集利用到正则表达式匹配的URL上
语法 <LocationMatch regex> ... </LocationMatch>
运用环境 server config, virtual host

这个指令的语法和指令"><Location ~>正则表达式语法完全同样。
示例:

<LocationMatch "/(home|section)/bin">
# ... rules go here
</LocationMatch>

不要忘了在每个<LocationMatch>标签中包含RewriteEngine on指令,也不要将不能利用的法则封装进去。

示例

注意:这些示例中所有的法则只适用于httpd.conf文件。在ISAPI_Rewrite以及在Apache的mod_rewrite中,法则的根本途径是不一样的,取决于你放置.htaccess文件的目录。要是你将法则放在httpd.conf里的话,初始领头斜线必须存在,而在.htaccess文件中,到这些文件的虚拟途径会被截断。法则取决于以RewriteBase /指令指导的根途径,来允许它们在httpd.conf和目录级的.htaccess文件的任何位置上运作。
简略的搜寻引擎友爱的网址
下面这个例子演示了怎样轻松地运用轮回标志隐匿查询字符串参数。假如你有一个如下的URL:http://www.mysite.com/foo.asp?a=A&b=B&c=C,而且你但愿以这样的地址来访问它:http://www.myhost.com/foo.asp/a/A/b/B/c/C
请尝试用下面的法则来达到预期的结果:
RewriteEngine on
RewriteRule ^(.*?\.asp)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,LP,QSA]
注意这个法则可能毁坏页面与CSS文件、图片等的相对链接。至所以这样是由于在阅读器中用于推算完备资源URI的根本途径(页面的父文件夹)产生了变化。只要在您运用目录分隔符作为替换字符时才会产生这个题目。有三种可用的解决方案:
1.运用下面的法则,它不影响根本途径,由于它没有用到目录分隔符“/”。
2.借助于<base href="/folder/">标签直接为页面指定准确的base途径
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]
富要害词URLs
在上面的例子中,我们运用很个别的技术来简略地隐匿查询字符串标志。但是许多对搜寻引擎优化很有用的解决方案是让您的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转换,但是这是一个小例子,是这个指南中的题外之话。
运用IIS作为反向代理 假如你有运转IIS的互联网服务器以及几台后台服务器或者利用程序运转在其它平台或者机器上。这些服务器不能直接在互联网上阅览,但是你必须为别人供给访问这些服务器的渠道。这里有一个演示怎样简略地将某个网站的完备内容映射到另一个运转了ISAPI_Rewrite的站点的文件夹的示例:

RewriteEngine on
RewriteBase /
RewriteRule mappoint(.+) http://sitedomain$1 [NC,P]

隐匿文件扩展名: 虽然不可能将一个站点的所有的文件的扩展名都隐匿起来,但是我们可以运用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

仿真基于主机头的虚拟网站 例如你已经注册了两个域名www.site1.comwww.site2.com。此刻你可以运用统一个物理站新建两个不一样的站点了。这里是一个法则示例:

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,等等。
阻断内联图像(阻止盗链) 假设你有一些页面插入了http://www.mysite.com/下的gif图片。一些其它站点将通过网页超链接插入这些图片。这会给你的网站添加许多无用的通信量,而且你但愿阻止这种做法。
虽然用ISAPI_Rewrite不能100%地维护图片不被盗链(只要专门的反盗链产品才能做到它),你至少可以在阅读器发来HTTP援用头的时候限定这种状况。下面的法则可以让你只允许来自统一主机的援用页或者空地址访问到这些图片。

RewriteEngine on
RewriteCond %{HTTP:Host}#%{HTTP:Referer} ^([^#]+)#(?!http://\1).+
RewriteRule .*\.(?:gif|jpg|png) /block.gif [NC]

重定向非www的版本到www
要是你的网站同时可以通过两种情势的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]

强迫SSL或者非SSL到一个指定的位置
这里是一个演示怎样将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]

转移站点位置
当你把网站从一个域名移到另一个域名,或者从一个文件夹移动另一个文件夹里的时候,这是经常会碰到的题目。你但愿将一个网站的所有请求重定向到另一个网站里,而且不遗失请求资源名以及参数。当你但愿保存现有的网页的排名和外链接的时候,它是非常有用的。这个解决方案是在旧的网站服务器上运用ISAPI_Rewrite:

RewriteEngine on
#Permanent redirect to update old links
RewriteRule (.+) http://newserver.com$1 [R=301,L]

均衡负荷仿真
这个示例模拟某种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里运用。

故障处置

Chapter 6故障处置
在这里你可以一步步找到你在安装ISAPI时碰到的题目的解决要领。
1.首先要准确解决您的题目,我们需要你运转最新的可用版本的ISAPI_Rewrite软件。你可以随时到我们的网站下载最新版的软件来晋级你的ISAPI_Rewrite。地址是http://www.baidow.com/tupian/lupian/20190516/immm3ojovs5.html 。
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
================


精简版的限定
ISAPI_Rewrite的精简版具有雷同的引擎和重写功能。但是也有下面这些限定:
? 不支撑散布式.htaccess配置、目录以及网站级配置,只要一个精简版安装目录中的全局的httpd.conf配置能被载入。
? 不支撑<VirtualHost>、<Directory>、<DirectoryMatch>、<Files>、<FilesMatch>、<Location> 以及<LocationMatch>这几个标签。
? 精简版中没有代理服务模块,因此所有的和代理服务功能相干的比方说RewriteProxy指令以及[P]标志都会被忽略。
? 精简版没有针关于虚拟主机环境的手工安装包
ISAPI_Rewrite精简版完全免费,它对开发或者测试目的以及只要几个网站而且不需要散布式配置或者代理功能的小型服务器来说是一个非常不错的解决方案

技术信息 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

运用和传播许可
该运用许可遮盖了所有的现有版本的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.

热门标签:dede模板 / destoon模板 / dedecms模版 / 织梦模板
责任编辑:Dy2cF
打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有152人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助



订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板