文档章节

阻止伪静态rewrite自动转码(中文字符)

钟良
 钟良
发布于 2016/06/02 10:43
字数 2283
阅读 141
收藏 0

输入图片说明 阻止伪静态rewrite自动转码(中文字符) [O]
输入图片说明
[NU]

ISAPI-REWRITE伪静态规则写法以及说明 作者: 字体:[增加 减小] 类型:转载 ISAPI-REWRITE伪静态规则写法以及说明,很多朋友对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模式应该生成一个空字符串,例如这一规则将从客户请求中重移代理

来源: http://www.jb51.net/article/30647.htm

本文转载自:http://www.jb51.net/article/30647.htm

上一篇: 负载均衡原理
下一篇: nginx伪静态配置
钟良
粉丝 8
博文 97
码字总数 32920
作品 0
嘉兴
CTO(技术副总裁)
私信 提问
关于IIS的URL Rewrite中文参数乱码问题

使用官方URL Rewrite时碰到如下问题: 如果伪静态路径包含中文字符时会导致该中文字符被编码为GBK,但是程序全部使用UTF-8编码,所以导致获取该中文参数时乱码,在仅考虑环境配置,不修改源码...

HandMU
2016/11/01
365
2
json_encode中文被自动转码unicode问题

用Laravel开发移动APP服务器端,数据从数据库查出转码JSON时被自动转码unicode,导致客户端中文显示unicode编码,跟代码发现调用了PHP自带的jsonencode自动做了中文的unicode编码处理,用JSO...

胖熊要吃肉
2015/09/26
728
0
Nginx中文域名配置

Nginx虚拟主机上绑定一个带中文域名,比如linuxeye.中国,浏览器不能跳转。 why? 因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中文域...

袁梓皓
2016/03/09
42
0
伪静态,如何匹配中文还有一些特殊符号,比如括号,;号,+号

伪静态,如何匹配中文还有一些特殊符号,比如括号,;号,+号 ‘串联成对双联Angular-Contact-Ball-Bearing[70000-C--AC、B-/DT型]-B为2B’,这段字符匹配伪静态能实现么...

YIPU
2012/12/12
1K
1
python抓取网页,字符集转换

英文不好学起来挺困难的,其中小弟就遇到一个十分蛋疼的问题,百度了半天就没找到解决办法~囧~ 摸索了半天自己解决了,记录下来与君共勉。 问题提出: 有时候我们采集网页,处理完毕后将字符...

吾爱
2013/02/12
5.8K
9

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
7
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部