ISAPI Rewrite 非官方中文配置手冊_藍色版本第1/3頁
更新時間:2007年07月06日 00:00:00 作者:
發(fā)這個幫助文件是因為在給朋友設置主機的時候發(fā)現(xiàn)他們的ISAPI Rewrite的設置都有些不正確,有些甚至阻礙了站點的正常運行。就把官方自帶的英文幫助粗略的翻譯了一下。大家可以自由使用和轉(zhuǎn)載。但轉(zhuǎn)載時如果你愿意請注明是 藍色 翻譯的版本。
===================
ISAPI Rewrite 配置簡介:
在NT/2000/XP和2003平臺上,ISAPI Rewrite在系統(tǒng)帳戶下射入INETINFO進程與 IIS 以共存模式過濾器運行。所以系統(tǒng)帳戶應該給予對ISAPI- REWIRITE DLLS Internet匿名訪問組 可讀可執(zhí)行權限 和所有的 HTTPD。INI 文件可讀權限,還應該給予系統(tǒng)帳戶對于所有包括 HTTPD。INI 文件的文件夾的可寫權限,這將允許產(chǎn)生 HTTP。 PARSE。ERRORS 日志文件,來記錄配置文件語法錯誤。對于PROXY模塊也需要額外的權限,因為它將運行于連接池或HIGH-ISPLATED 應用模式,IIS帳戶共享池和HIGH-ISOLATION池應被給予對RWHELPERE。DLL的可讀權限。缺省情況下IWAM-《計算機名》被用于所有的池,在相應的COM+應用設置中應借助COM+ADMINISTRATION MMC SNAP-IN建立池帳戶
配置文件格式化:
配置文件分為兩種: GLOBAL(服務器全局模式)和 INDIVIDUAL(站點獨立設置模式)文件,GLOBAL(服務器端全局模式)配置文件應該被放在ISAPI-REWRITE 安裝目錄中,名為 httpd.ini 。這個文件可以通過開始菜單的快捷方式訪問和配置,這個文件里面的映射規(guī)則為全局規(guī)則,將針對所有站點起效。INDIVIDUAL(站點獨立設置模式)配置文件應該被放在虛擬站點的根目錄內(nèi),也被命名為httpd.ini文件,這里面應該放置針對站點的映射配置設置,只針對被放置的虛擬站點有效。兩種類型的 httpd.ini 都是標準的windows ini 文件。所有的映射規(guī)則應該被放置在 [ISAPI_Rewrite] 之后。之前的文件文本將被忽略。
HTTPD.INI文件示例
[ISAPI_Rewrite]
# This is a comment
# 300 = 5 minutes
CacheClockRate 300
RepeatLimit 20
# 設置其他人沒有下載 httpd.ini 和 httpd.parse.errors 文件的權限
RewriteRule /httpd(?:\.ini|\.parse\.errors) / [F,I,O]
# Block external access to the Helper ISAPI Extension
RewriteRule .*\.isrwhlp / [F,I,O]
# 配置規(guī)則
RewriteCond Host: (.+)
RewriteCond 指令
Syntax:(句法) RewriteCond TestVerb CondPattern [Flags]
這一指令定義一個條件規(guī)則,在 RewriteRule 或者 RewriteHeader或 RewriteProxy指令前預行RewriteCond指令,后面的規(guī)則只有它的,模式匹配URI的當前狀態(tài)并且額外的條件也被應用才會被應用。
TestVerb
Specifies verb that will be matched against regular expression.
特別定義的動詞匹配規(guī)定的表達式
TestVerb=(URL | METHOD | VERSION | HTTPHeaderName: | %ServerVariable) where:
URL - returns Request-URI of client request as described in RFC 2068 (HTTP 1.1);
返回客戶端在RFC2068中描述的需求的Request-URI
METHOD - returns HTTP method of client request (OPTIONS, GET, HEAD, POST, PUT, DELETE or TRACE);
返回客戶端需求(OPTIONS, GET, HEAD, POST, PUT, DELETE or TRACE)的HTTP方法
VERSION - returns HTTP version;
返回HTTP版本
HTTPHeaderName - returns value of the specified HTTP header. HTTPHeaderName can be any valid HTTP header name. Header names should include the trailing colon ":". If specified header does not exists in a client's request TestVerb is treated as empty string.
返回特定義的HTTP頭文件的值
HTTPHeaderName =
Accept:
Accept-Charset:
Accept-Encoding:
Accept-Language:
Authorization:
Cookie:
From:
Host:
If-Modified-Since:
If-Match:
If-None-Match:
If-Range:
If-Unmodified-Since:
Max-Forwards:
Proxy-Authorization:
Range:
Referer:
User-Agent:
Any-Custom-Header
得到更多的關于HTTP頭文件的和他們的值的信息參考RFC2068
ServerVariable 返回特定義的服務器變量的值 。例如服務器端口,全部服務器變量列表應在IIS文檔中建立,變量名應用%符預定;
CondPattern
The regular expression to match TestVerb
規(guī)則表達式匹配TestVerb
[Flags]
Flags is a comma-separated list of the following flags:
O (nOrmalize)
Normalizes string before processing. Normalization includes removing of an URL-encoding, illegal characters, etc. This flag is useful with URLs and URL-encoded headers
RewriteRule 指令
Syntax: RewriteRule Pattern FormatString [Flags]
這個指令可以不止發(fā)生一次,每個指令定義一個單獨的重寫規(guī)則,這些規(guī)則的定義命令很重要,因為這個命令在應用運行時規(guī)則是有用途的
I (ignore case)
不管大小寫強行指定字符匹配,這個FLAG影響RewriteRule指令和相應的RewriteCond 指令
F (Forbidden)
對客戶端做反應,停止REWRITING進程并且發(fā)送403錯誤,注意在這種情況下FORMATSTRING 是無用的并可以設置為任何非空字符串。
L (last rule)
不應用任何重寫規(guī)則在此停止重寫進程,使用這個FLAG以阻止當前被重寫的URI被后面的規(guī)則再次重寫
N (Next iteration)
強制REWRITINGENGINE調(diào)整規(guī)則目標并且從頭重啟規(guī)則檢查(所有修改將保存),重啟次數(shù)由RepeatLimit指定的值限制,如果這個數(shù)值超過N FLAG將被忽略
NS (Next iteration of the same rule)
以N標記工作不從相同的規(guī)則重啟規(guī)則規(guī)則進程(例如強制重復規(guī)則應用),通過RepeatLimit指令指定一個反復實行某一規(guī)則的最大數(shù)目,
P (force proxy)
強制目的URI在內(nèi)部強制為代理需求并且立即通過ISAPI擴展應付代理需求,必須確認代理字符串是一個有效的URI包括協(xié)議主機等等否則代理將返回錯誤
R (explicit redirect)
強制服務器對客戶端發(fā)出重定向指示即時應答,提供目的URI的新地址,重定向規(guī)則經(jīng)常是最后規(guī)則
RP (permanent redirect)
幾乎和[R]標記相同但是發(fā)布301HTTP狀態(tài)而不是302HTTP狀態(tài)代碼
U (Unmangle Log)
當URI是源需求而不是重寫需求時記載URI
O (nOrmalize)
在實行之前標準化字符串。標準化包括URL-ENCODING,不合法的字符的再移動等,這個標記對于URLS和URLS-ENDODED頭是有用的
CL (Case Lower)
小寫
CU (Case Upper)
大寫
RewriteHeader directive
Syntax: RewriteHeader HeaderName Pattern FormatString [Flags]
這個指令是RewriteRule的更概括化變種,它不僅重寫URL的客戶端需求部分,而且重寫HTTP頭,這個指令不僅用于重寫。生成,刪除任何HTTP頭,甚至改變客戶端請求的方法
HeaderName
指定將被重寫的客戶頭,可取的值與 RewriteCond 指令中TestVerb參數(shù)相同
Pattern
限定規(guī)則表達式以匹配Request-URI,
FormatString
限定將生成新的URI的FormatString
[Flags]
是一個下列FLAGS的命令分隔列表
I (ignore case)
不管大小寫強行指定字符匹配,這個FLAG影響RewriteRule指令和相應的RewriteCond 指令
F (Forbidden)
對客戶端做反應,停止REWRITING進程并且發(fā)送403錯誤,注意在這種情況下FORMATSTRING 是無用的并可以設置為任何非空字符串。
L (last rule)
不應用任何重寫規(guī)則在此停止重寫進程,使用這個FLAG以阻止當前被重寫的URI被后面的規(guī)則再次重寫
N (Next iteration)
強制REWRITINGENGINE調(diào)整規(guī)則目標并且從頭重啟規(guī)則檢查(所有修改將保存),重啟次數(shù)由RepeatLimit指定的值限制,如果這個數(shù)值超過N FLAG將被忽略
NS (Next iteration of the same rule)
以N標記工作不從相同的規(guī)則重啟規(guī)則規(guī)則進程(例如強制重復規(guī)則應用),通過RepeatLimit指令指定一個反復實行某一規(guī)則的最大數(shù)目,
R (explicit redirect)
強制服務器對客戶端發(fā)出重定向指示即時應答,提供目的URI的新地址,重定向規(guī)則經(jīng)常是最后規(guī)則
RP (permanent redirect)
幾乎和[R]標記相同但是發(fā)布301HTTP狀態(tài)而不是302HTTP狀態(tài)代碼
U (Unmangle Log)
當URI是源需求而不是重寫需求時記載URI
O (nOrmalize)
在實行之前標準化字符串。標準化包括URL-ENCODING,不合法的字符的再移動等,這個標記對于URLS和URLS-ENDODED頭是有用的
CL (Case Lower)
小寫
CU (Case Upper)
大寫
要重移動頭,F(xiàn)ORMAT STRING模式應該生成一個空字符串,例如這一規(guī)則將從客戶請求中重移代理信息
RewriteHeader User-Agent: .* $0
并且這一規(guī)則將把OLD-URL HEADER 加入請求中。
RewriteCond URL (.*)RewriteHeader Old-URL: ^$ $1
最后一個例子將通過改變請求方法定向所有的WEBDAV請求到/WEBDAV。ASP
RewriteCond METHOD OPTIONS
RewriteRule (.*) /webdav.asp?$1
RewriteHeader METHOD OPTIONS GET
RewriteProxy directive
Syntax: RewriteProxy Pattern FormatString [Flags]
強制目的URI在內(nèi)部強制為代理需求并且立即通過ISAPI擴展應付代理需求,這將允許IIS作為代理服務器并且重路由到其他站點和服務器
Pattern
限定規(guī)則表達式以匹配Request-URI,
FormatString
限定將生成新的URI的FormatString
[Flags]
是一個下列FLAGS的命令分隔列表
D (Delegate security)
代理模式將試圖以當前假冒的用戶資格登陸遠程服務器,
C (use Credentials)
代理模式將試圖一在URL或基本授權頭文件中指定的資格登陸遠程服務器,用這個標記你可以使用http://user:password@host.com/path/ syntax 作為URL
F (Follow redirects)
缺省情況下ISAPI_Rewrite 將試圖將MAP遠程服務器返回的重定向指令到本地服務器命名空間,如果遠程服務器返回重定向點到那臺服務器其他的某個位置,ISAPI_Rewrite 將修改這一重定向指令指向本服務器名,這將避免用戶看到真實(內(nèi)部)服務器名稱
使用F標記強制代理模式內(nèi)部跟蹤遠程服務器返回的重定向指令,使用這個標記如果你根本不需要接受遠程服務器的重定向指令,在WINHTTP設置中有重定向限制以避免遠程重定向循環(huán)
===================
ISAPI Rewrite 配置簡介:
在NT/2000/XP和2003平臺上,ISAPI Rewrite在系統(tǒng)帳戶下射入INETINFO進程與 IIS 以共存模式過濾器運行。所以系統(tǒng)帳戶應該給予對ISAPI- REWIRITE DLLS Internet匿名訪問組 可讀可執(zhí)行權限 和所有的 HTTPD。INI 文件可讀權限,還應該給予系統(tǒng)帳戶對于所有包括 HTTPD。INI 文件的文件夾的可寫權限,這將允許產(chǎn)生 HTTP。 PARSE。ERRORS 日志文件,來記錄配置文件語法錯誤。對于PROXY模塊也需要額外的權限,因為它將運行于連接池或HIGH-ISPLATED 應用模式,IIS帳戶共享池和HIGH-ISOLATION池應被給予對RWHELPERE。DLL的可讀權限。缺省情況下IWAM-《計算機名》被用于所有的池,在相應的COM+應用設置中應借助COM+ADMINISTRATION MMC SNAP-IN建立池帳戶
配置文件格式化:
配置文件分為兩種: GLOBAL(服務器全局模式)和 INDIVIDUAL(站點獨立設置模式)文件,GLOBAL(服務器端全局模式)配置文件應該被放在ISAPI-REWRITE 安裝目錄中,名為 httpd.ini 。這個文件可以通過開始菜單的快捷方式訪問和配置,這個文件里面的映射規(guī)則為全局規(guī)則,將針對所有站點起效。INDIVIDUAL(站點獨立設置模式)配置文件應該被放在虛擬站點的根目錄內(nèi),也被命名為httpd.ini文件,這里面應該放置針對站點的映射配置設置,只針對被放置的虛擬站點有效。兩種類型的 httpd.ini 都是標準的windows ini 文件。所有的映射規(guī)則應該被放置在 [ISAPI_Rewrite] 之后。之前的文件文本將被忽略。
HTTPD.INI文件示例
[ISAPI_Rewrite]
# This is a comment
# 300 = 5 minutes
CacheClockRate 300
RepeatLimit 20
# 設置其他人沒有下載 httpd.ini 和 httpd.parse.errors 文件的權限
RewriteRule /httpd(?:\.ini|\.parse\.errors) / [F,I,O]
# Block external access to the Helper ISAPI Extension
RewriteRule .*\.isrwhlp / [F,I,O]
# 配置規(guī)則
RewriteCond Host: (.+)
RewriteCond 指令
Syntax:(句法) RewriteCond TestVerb CondPattern [Flags]
這一指令定義一個條件規(guī)則,在 RewriteRule 或者 RewriteHeader或 RewriteProxy指令前預行RewriteCond指令,后面的規(guī)則只有它的,模式匹配URI的當前狀態(tài)并且額外的條件也被應用才會被應用。
TestVerb
Specifies verb that will be matched against regular expression.
特別定義的動詞匹配規(guī)定的表達式
TestVerb=(URL | METHOD | VERSION | HTTPHeaderName: | %ServerVariable) where:
URL - returns Request-URI of client request as described in RFC 2068 (HTTP 1.1);
返回客戶端在RFC2068中描述的需求的Request-URI
METHOD - returns HTTP method of client request (OPTIONS, GET, HEAD, POST, PUT, DELETE or TRACE);
返回客戶端需求(OPTIONS, GET, HEAD, POST, PUT, DELETE or TRACE)的HTTP方法
VERSION - returns HTTP version;
返回HTTP版本
HTTPHeaderName - returns value of the specified HTTP header. HTTPHeaderName can be any valid HTTP header name. Header names should include the trailing colon ":". If specified header does not exists in a client's request TestVerb is treated as empty string.
返回特定義的HTTP頭文件的值
HTTPHeaderName =
Accept:
Accept-Charset:
Accept-Encoding:
Accept-Language:
Authorization:
Cookie:
From:
Host:
If-Modified-Since:
If-Match:
If-None-Match:
If-Range:
If-Unmodified-Since:
Max-Forwards:
Proxy-Authorization:
Range:
Referer:
User-Agent:
Any-Custom-Header
得到更多的關于HTTP頭文件的和他們的值的信息參考RFC2068
ServerVariable 返回特定義的服務器變量的值 。例如服務器端口,全部服務器變量列表應在IIS文檔中建立,變量名應用%符預定;
CondPattern
The regular expression to match TestVerb
規(guī)則表達式匹配TestVerb
[Flags]
Flags is a comma-separated list of the following flags:
O (nOrmalize)
Normalizes string before processing. Normalization includes removing of an URL-encoding, illegal characters, etc. This flag is useful with URLs and URL-encoded headers
RewriteRule 指令
Syntax: RewriteRule Pattern FormatString [Flags]
這個指令可以不止發(fā)生一次,每個指令定義一個單獨的重寫規(guī)則,這些規(guī)則的定義命令很重要,因為這個命令在應用運行時規(guī)則是有用途的
I (ignore case)
不管大小寫強行指定字符匹配,這個FLAG影響RewriteRule指令和相應的RewriteCond 指令
F (Forbidden)
對客戶端做反應,停止REWRITING進程并且發(fā)送403錯誤,注意在這種情況下FORMATSTRING 是無用的并可以設置為任何非空字符串。
L (last rule)
不應用任何重寫規(guī)則在此停止重寫進程,使用這個FLAG以阻止當前被重寫的URI被后面的規(guī)則再次重寫
N (Next iteration)
強制REWRITINGENGINE調(diào)整規(guī)則目標并且從頭重啟規(guī)則檢查(所有修改將保存),重啟次數(shù)由RepeatLimit指定的值限制,如果這個數(shù)值超過N FLAG將被忽略
NS (Next iteration of the same rule)
以N標記工作不從相同的規(guī)則重啟規(guī)則規(guī)則進程(例如強制重復規(guī)則應用),通過RepeatLimit指令指定一個反復實行某一規(guī)則的最大數(shù)目,
P (force proxy)
強制目的URI在內(nèi)部強制為代理需求并且立即通過ISAPI擴展應付代理需求,必須確認代理字符串是一個有效的URI包括協(xié)議主機等等否則代理將返回錯誤
R (explicit redirect)
強制服務器對客戶端發(fā)出重定向指示即時應答,提供目的URI的新地址,重定向規(guī)則經(jīng)常是最后規(guī)則
RP (permanent redirect)
幾乎和[R]標記相同但是發(fā)布301HTTP狀態(tài)而不是302HTTP狀態(tài)代碼
U (Unmangle Log)
當URI是源需求而不是重寫需求時記載URI
O (nOrmalize)
在實行之前標準化字符串。標準化包括URL-ENCODING,不合法的字符的再移動等,這個標記對于URLS和URLS-ENDODED頭是有用的
CL (Case Lower)
小寫
CU (Case Upper)
大寫
RewriteHeader directive
Syntax: RewriteHeader HeaderName Pattern FormatString [Flags]
這個指令是RewriteRule的更概括化變種,它不僅重寫URL的客戶端需求部分,而且重寫HTTP頭,這個指令不僅用于重寫。生成,刪除任何HTTP頭,甚至改變客戶端請求的方法
HeaderName
指定將被重寫的客戶頭,可取的值與 RewriteCond 指令中TestVerb參數(shù)相同
Pattern
限定規(guī)則表達式以匹配Request-URI,
FormatString
限定將生成新的URI的FormatString
[Flags]
是一個下列FLAGS的命令分隔列表
I (ignore case)
不管大小寫強行指定字符匹配,這個FLAG影響RewriteRule指令和相應的RewriteCond 指令
F (Forbidden)
對客戶端做反應,停止REWRITING進程并且發(fā)送403錯誤,注意在這種情況下FORMATSTRING 是無用的并可以設置為任何非空字符串。
L (last rule)
不應用任何重寫規(guī)則在此停止重寫進程,使用這個FLAG以阻止當前被重寫的URI被后面的規(guī)則再次重寫
N (Next iteration)
強制REWRITINGENGINE調(diào)整規(guī)則目標并且從頭重啟規(guī)則檢查(所有修改將保存),重啟次數(shù)由RepeatLimit指定的值限制,如果這個數(shù)值超過N FLAG將被忽略
NS (Next iteration of the same rule)
以N標記工作不從相同的規(guī)則重啟規(guī)則規(guī)則進程(例如強制重復規(guī)則應用),通過RepeatLimit指令指定一個反復實行某一規(guī)則的最大數(shù)目,
R (explicit redirect)
強制服務器對客戶端發(fā)出重定向指示即時應答,提供目的URI的新地址,重定向規(guī)則經(jīng)常是最后規(guī)則
RP (permanent redirect)
幾乎和[R]標記相同但是發(fā)布301HTTP狀態(tài)而不是302HTTP狀態(tài)代碼
U (Unmangle Log)
當URI是源需求而不是重寫需求時記載URI
O (nOrmalize)
在實行之前標準化字符串。標準化包括URL-ENCODING,不合法的字符的再移動等,這個標記對于URLS和URLS-ENDODED頭是有用的
CL (Case Lower)
小寫
CU (Case Upper)
大寫
要重移動頭,F(xiàn)ORMAT STRING模式應該生成一個空字符串,例如這一規(guī)則將從客戶請求中重移代理信息
RewriteHeader User-Agent: .* $0
并且這一規(guī)則將把OLD-URL HEADER 加入請求中。
RewriteCond URL (.*)RewriteHeader Old-URL: ^$ $1
最后一個例子將通過改變請求方法定向所有的WEBDAV請求到/WEBDAV。ASP
RewriteCond METHOD OPTIONS
RewriteRule (.*) /webdav.asp?$1
RewriteHeader METHOD OPTIONS GET
RewriteProxy directive
Syntax: RewriteProxy Pattern FormatString [Flags]
強制目的URI在內(nèi)部強制為代理需求并且立即通過ISAPI擴展應付代理需求,這將允許IIS作為代理服務器并且重路由到其他站點和服務器
Pattern
限定規(guī)則表達式以匹配Request-URI,
FormatString
限定將生成新的URI的FormatString
[Flags]
是一個下列FLAGS的命令分隔列表
D (Delegate security)
代理模式將試圖以當前假冒的用戶資格登陸遠程服務器,
C (use Credentials)
代理模式將試圖一在URL或基本授權頭文件中指定的資格登陸遠程服務器,用這個標記你可以使用http://user:password@host.com/path/ syntax 作為URL
F (Follow redirects)
缺省情況下ISAPI_Rewrite 將試圖將MAP遠程服務器返回的重定向指令到本地服務器命名空間,如果遠程服務器返回重定向點到那臺服務器其他的某個位置,ISAPI_Rewrite 將修改這一重定向指令指向本服務器名,這將避免用戶看到真實(內(nèi)部)服務器名稱
使用F標記強制代理模式內(nèi)部跟蹤遠程服務器返回的重定向指令,使用這個標記如果你根本不需要接受遠程服務器的重定向指令,在WINHTTP設置中有重定向限制以避免遠程重定向循環(huán)
相關文章
壓力測試工具Apache Bench實現(xiàn)原理及用法解析
這篇文章主要介紹了壓力測試工具Apache Bench實現(xiàn)原理及用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08