ISAPI-REWRITE伪静态规则写法以及说明

REWRITE伪静态

一、Apache配置:
进入/etc/httpd/conf/目录下,打开httpd.conf文件。
启用rewrite
# LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 #
启用.htaccess AllowOverride None 修改为: AllowOverride All
--------------------------------------------------------------------------------
二、Rewrite写法
服务器有配置文件不可能由我们来改,所以大多情况下要在网站的根目录下建一个.htaccess文件。
RewriteEngine on //启动rewrite引擎
RewriteRule ^/index([0-9]*).html$ /index.php?id=$1 //“([0-9]*)” 代表范围 用(.*)代表所有,下同。
RewriteRule ^/index([0-9]*)/$ /index.php?id=$1 [R] //虚拟目录
--------------------------------------------------------------------------------
三、mod_rewrite 规则修正符
1) R 强制外部重定向
2) F 禁用URL,返回403HTTP状态码。
3) G 强制URL为GONE,返回410HTTP状态码。
4) P 强制使用代理转发。
5) L 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N 重新从第一条规则开始运行重写过程。
7) C 与下一条规则关联,如果规则匹配则正常处理,以下修正符无效
8) T=MIME-type(force MIME type) 强制MIME类型
9) NS 只用于不是内部子请求
10) NC 不区分大小写
11) QSA 追加请求字符串
12) NE 不在输出转义特殊字符 \%3d$1 等价于 =$1

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模式应该生成一个空字符串,例如这一规则将从客户请求中重移代理

(0)

相关推荐

  • Nginx伪静态配置和常用Rewrite伪静态规则集锦

    nginx里使用伪静态是直接在nginx.conf 中写规则的,并不需要像apache要开启写模块(mod_rewrite)才能进行伪静态. nginx只需要打开nginx.conf配置文件,在server里面写需要的规则即可. 复制代码 代码如下: server { listen       80; server_name  bbs.jb51.net; index index.html index.htm index.php; root  /home/www/bbs; error_page 

  • ISAPI-REWRITE伪静态规则写法以及说明

    REWRITE伪静态 一.Apache配置: 进入/etc/httpd/conf/目录下,打开httpd.conf文件. 启用rewrite # LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 # 启用.htaccess AllowOverride None 修改为: AllowOverride All ------------------------------------------------------------------

  • IIS防盗链 ISAPI Rewrite图片防盗链规则写法

    通过G.CN和B.CN搜索后得出了几种不同的方案,例如网站程序的URL伪装法.服务器端的收费插件法和ISAPI-REWRITE的规则过滤法等,考虑自身网站结构和钱包的困难问题,最终选择了后者,即现在流行用来做伪静态的ISAPI Rewrite书写规则来实现我的防盗链"梦想". 为什么说是梦想呢?首先表示惋惜,懒人我搜来了一大票经过无数次转载而来的文章,把现呈的代码应用后发现要么根本不起作用,要么就是效果达不到我想要的,几经周折后终于把这原本认为可以轻易借鉴照搬的防盗链给完成了,恨那些只

  • 真正可用的IIS的ISAPI-Rewrite伪静态URL图片防盗链规则写法

    网站程序的URL伪装法.服务器端的收费插件法和ISAPI-REWRITE的规则过滤法等,考虑自身网站结构和钱包的困难问题,最终选择了后者,即现在流行用来做伪静态的ISAPI Rewrite书写规则来实现 经测试四种情况正常,即站内链接正常,白名单里的链接正常,盗链者链接屏蔽,搜索引擎链接正常. 详细如下: 一.完全屏蔽所有盗链来源的写法(如已有其它规则,则置于已有规则的上面) 复制代码 代码如下: RewriteCond Host: (.+) RewriteCond Referer: (?!ht

  • 没有ISAPI Rewrite FULL照样玩多站点伪静态

    IIS中增加URL Rewrite功能,最多人选用的是名为"ISAPI Rewrite"的软件,网上下载的破解版,其实破解不完善,最终会不能用. 再次查找,找到了Ionic's Isapi Rewrite Filter,完全开源,完全免费,完全没有中文使用手册. 测试后,使用正常,用法分享一下: 首先到官方网站http://www.codeplex.com/IIRF/Release/ProjectReleases.aspx或者到我们下载(http://www.jb51.net/soft

  • 没有ISAPI Rewrite FULL照样玩多站点伪静态的方法分享

    再次查找,找到了Ionic's Isapi Rewrite Filter,完全开源,完全免费,完全没有中文使用手册. 测试后,使用正常,用法分享一下: 首先到官方网站http://www.codeplex.com/IIRF/Release/ProjectReleases.aspx下载最新软件包,注意要下载的是IonicIsapiRewriter-2.*-Release-bin.zip(我们下载地址),版本号可能会变化.以下安装仅针对WIN2003+IIS6.0的服务器环境. 一.安装IIRF 1

  • IIS真正能用的ISAPI-Rewrite图片防盗链规则写法

    通过G.CN和B.CN搜索后得出了几种不同的方案,例如网站程序的URL伪装法.服务器端的收费插件法和ISAPI-REWRITE的规则过滤法等,考虑自身网站结构和钱包的困难问题,最终选择了后者,即现在流行用来做伪静态的ISAPI Rewrite书写规则来实现我的防盗链"梦想". 为什么说是梦想呢?首先表示惋惜,懒人我搜来了一大票经过无数次转载而来的文章,把现呈的代码应用后发现要么根本不起作用,要么就是效果达不到我想要的,几经周折后终于把这原本认为可以轻易借鉴照搬的防盗链给完成了,恨那些只

  • ISAPI Rewrite多站点破解版 完美实现IIS伪静态的方法

    在前文中,介绍了Windows2003 IIS6/7完美实现WordPress伪静态的方法,主要说的是WordPress的伪静态配置方法,有一点局限性.而且用的是也免费的伪静态组件,只支持单站点,应用于其它系统可能不太合适.今天,就为大家介绍下Windows2003下IIS6.0.IIS7.0的伪静态组件安装和伪静态配置方法,还包括常用的伪静态规则使用方法.1)下载IIS伪静态组件--ISAPI Rewrite v1.3 for IIS.CR完美破解版ISAPI Rewrite v1.3 for

  • ISAPI Rewrite iis伪静态组件最新教程

    在IIS下实现动态网页静态化的方法有两种:1 升级到IIS7-如果你的服务器不是Windows 2008,那么你只能放弃.2 使用三方插件-最可靠的就是ISAPI Rewrite了,所以本教程着重介绍. ISAPI Rewrite目前最新版本是3.0,3.0分成Lite和Full两个版本.Lite版无限期完全免费,Full版要99美金. 两者最大的区别是,如果你服务器上有配置了多个网站,Full版可以为每个不同的站点设置不同的Rewrite rule.所以如果你不需要每个网站单独设置规则,大可放

  • WordPress在window2003 IIS ISAPI ReWrite下的URL规则

    为了便于搜索引擎抓取(换句话就是假静态),下面是URL ReWrite的规则,效果看我的chinadigger的链接地址.我目前的Rewrite规则:  复制代码 代码如下: [ISAPI_Rewrite] # 3600 = 1 hour  CacheClockRate 3600 RepeatLimit 32 # Protect httpd.ini and httpd.parse.errors files  # from accessing through HTTP  # WordPress r

随机推荐