• ISAPI_Rewrite规则写法


    常见ISAPI_Rewrite规则写法

    # 排除当前虚拟主机需要正常访问的域名(web.3637.com www.3637.com) 
    # RewriteCond Host: (
    ?:web|www)\.eboat\.cn 
    # 多数情况下是一个,即当前提供二级域名服务的系统(如建站系统) 
    RewriteCond Host: web\.eboat\.cn 
    RewriteRule (.
    *) $1 [L] 

    # 解决不规范目录(末尾无
    /)的问题 
    # 但前提是目录名不含‘.’而文件名必须包含,否则无法区分两者 
    # 如果保证URL中的目录名称规范,则无需此规则 
    RewriteRule 
    ^/([^.]+[^/]$) /$1/ [L,R] 

    # 提取任意的二级域名名称(即第一个词汇) 
    # 用[a
    -zA-Z0-9_-]限制名称字符,重写Url到Home/子目录下 
    # 如 test.
    3637.com => web.3637.com/Home/test 
    RewriteCond Host: ([a
    -zA-Z0-9_-]+)\.eboat\.cn 
    RewriteRule 
    ^/(.*/Home/$1/$2 [I,L] 

    [ISAPI_Rewrite] 
    RepeatLimit 
    1 
    # Defend your computer from some worm attacks 
    RewriteRule .
    *(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O] 

    # 排除当前虚拟主机需要正常访问的域名(web.
    3637.com www.3637.com) 
    # RewriteCond Host: (
    ?:web|www)\.eboat\.cn 
    # 多数情况下是一个,即当前提供二级域名服务的系统(如建站系统) 
    RewriteCond Host: web\.eboat\.cn 
    RewriteRule (.
    *) $1 [L] 

    # 解决不规范目录(末尾无
    /)的问题 
    # 但前提是目录名不含‘.’而文件名必须包含,否则无法区分两者 
    # 如果保证URL中的目录名称规范,则无需此规则 
    RewriteRule 
    ^/([^.]+[^/]$) /$1/ [L,R] 

    # 提取任意的二级域名名称(即第一个词汇) 
    # 用[a
    -zA-Z0-9_-]限制名称字符,重写Url到Home/子目录下 
    # 如 test.
    3637.com => web.3637.com/Home/test 
    RewriteCond Host: ([a
    -zA-Z0-9_-]+)\.eboat\.cn 
    RewriteRule 
    ^/(.*/Home/$1/$2 [I,L] 

    HTTPD.INI文件示例

    [ISAPI_Rewrite]

    # This 
    is
     a comment

    300 = 5
     minutes
    CacheClockRate 
    300

    RepeatLimit 
    20

    # Block external access to the httpd.ini and httpd.parse.errors files
    RewriteRule 
    /httpd(?:.ini|.parse.errors) / [F,I,O]

    # Block external access to the Helper ISAPI Extension
    RewriteRule .
    *.isrwhlp /
     [F,I,O]

    # Some custom rules
    RewriteCond Host: (.
    +
    )

    RewriteCond
     指令

    Syntax:(句法) RewriteCond TestVerb CondPattern [Flags]
    这一指令定义一个条件规则,在 RewriteRule 或者 RewriteHeader或 RewriteProxy指令前预行RewriteCond指令,后面的规则 只有它的,模式匹配URI的当前状态并且额外的条件也被应用才会被应用。

    TestVerb

    Specifies verb that will be matched against regular expression.
    特别定义的动词匹配规定的表达式
    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
    规则表达式匹配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]
    这个指令可以不止发生一次,每个指令定义一个单独的重写规则,这些规则的定义命令很重要,因为这个命令在应用运行时规则是有用途的

    I (ignore case)
    不管大小写强行指定字符匹配,这个FLAG影响RewriteRule指令和相应的RewriteCond 指令
    F (Forbidden)
    对客户端做反应,停止REWRITING进程并且发送403错误,注意在这种情况下FORMATSTRING 是无用的并可以设置为任何非空字符串。
    L (last rule)
    不应用任何重写规则在此停止重写进程,使用这个FLAG以阻止当前被重写的URI被后面的规则再次重写
    N (Next iteration)
    强制REWRITINGENGINE调整规则目标并且从头重启规则检查(所有修改将保存),重启次数由RepeatLimit指定的值限制,如果这个数值超过N FLAG将被忽略
    NS (Next iteration of the same rule)
    以N标记工作不从相同的规则重启规则规则进程(例如强制重复规则应用),通过RepeatLimit指令指定一个反复实行某一规则的最大数目,
    P (force proxy)
    强制目的URI在内部强制为代理需求并且立即通过ISAPI扩展应付代理需求,必须确认代理字符串是一个有效的URI包括协议 主机等等否则代理将返回错误
    R (explicit redirect)
    强制服务器对客户端发出重定向指示即时应答,提供目的URI的新地址,重定向规则经常是最后规则
    RP (permanent redirect)
    几乎和[R]标记相同但是发布301HTTP状态而不是302HTTP状态代码
    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参数相同

    Pattern
    限定规则表达式以匹配Request-URI,
    FormatString
    限定将生成新的URI的FormatString
    [Flags]
    是一个下列FLAGS的命令分隔列表
    I (ignore case)
    不管大小写强行指定字符匹配,这个FLAG影响RewriteRule指令和相应的RewriteCond 指令
    F (Forbidden)
    对客户端做反应,停止REWRITING进程并且发送403错误,注意在这种情况下FORMATSTRING 是无用的并可以设置为任何非空字符串。
    L (last rule)
    不应用任何重写规则在此停止重写进程,使用这个FLAG以阻止当前被重写的URI被后面的规则再次重写
    N (Next iteration)
    强制REWRITINGENGINE调整规则目标并且从头重启规则检查(所有修改将保存),重启次数由RepeatLimit指定的值限制,如果这个数值超过N FLAG将被忽略

    NS (Next iteration of the same rule)
    以N标记工作不从相同的规则重启规则规则进程(例如强制重复规则应用),通过RepeatLimit指令指定一个反复实行某一规则的最大数目,

    R (explicit redirect)
    强制服务器对客户端发出重定向指示即时应答,提供目的URI的新地址,重定向规则经常是最后规则
    RP (permanent redirect)
    几乎和[R]标记相同但是发布301HTTP状态而不是302HTTP状态代码
    U (Unmangle Log)
    当URI是源需求而不是重写需求时记载URI
    O (nOrmalize)
    在实行之前标准化字符串。标准化包括URL-ENCODING,不合法的字符的再移动等,这个标记对于URLS和URLS-ENDODED头是有用的
    CL (Case Lower)
    小写
    CU (Case Upper)
    大写

    要重移动头,FORMAT STRING模式应该生成一个空字符串,例如这一规则将从客户请求中重移代理

  • 相关阅读:
    WBS分析
    需求分析-NABCD
    电梯演讲--2048小游戏
    Git diff 算法
    2020 北京理工大学889 回忆
    抖音后台开发社招面试
    珍宝阁
    2018 北京理工大学复试上机 回忆版
    2018 北京理工大学889 回忆
    做一个博客
  • 原文地址:https://www.cnblogs.com/tearer/p/1816753.html
Copyright © 2020-2023  润新知