欢迎来到哆啦A梦的博客
Sep
1
Apache的rewrite的重写非常常用,现总结了一下.
Apache mod_rewrite规则重写的标志一览
R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
P(force proxy) 强制使用代理转发。
L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
N(next round) 重新从第一条规则开始运行重写过程。
C(chained with next rule) 与下一条规则关联
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
T=MIME-type(force MIME type) 强制MIME类型
NS (used only if no internal sub-request) 只用于不是内部子请求
NC(no case) 不区分大小写
QSA(query string append) 追加请求字符串
NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zed
PT(pass through to next handler) 传递给下一个处理
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
S=num(skip next rule(s)) 跳过num条规则
E=VAR:VAL(set environment variable) 设置环境变量
使用mod_rewrite时常用的服务器变量:
HTTP headers:HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_HOST, HTTP_ACCEPT
connection & request: REMOTE_ADDR, QUERY_STRING
server internals: DOCUMENT_ROOT, SERVER_PORT, SERVER_PROTOCOL
system stuff: TIME_YEAR, TIME_MON, TIME_DAY
RewriteRule规则表达式的说明:
. 匹配任何单字符
[chars] 匹配字符串:chars
[^chars] 不匹配字符串:chars
text1|text2 可选择的字符串:text1或text2
? 匹配0到1个字符
* 匹配0到多个字符
+ 匹配1到多个字符
^ 字符串开始标志
$ 字符串结束标志
\n 转义符标志
反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9)
反向引用 %N 用于 RewriteCond 中最后一个匹配的变量调用(1 <= N <= 9)
RewriteCond适用的标志符
‘nocase|NC’ (no case)忽略大小
‘ornext|OR’ (or next condition)逻辑或,可以同时匹配多个RewriteCond条件
RewriteRule适用的标志符‘redirect|R [=code]’ (force redirect)强迫重写为基于http开头的外部转向(注意URL的变化) 如:[R=301,L]
‘forbidden|F’ (force URL to be forbidden)重写为禁止访问
‘proxy|P’ (force proxy)重写为通过代理访问的http路径
‘last|L’ (last rule)最后的重写规则标志,如果匹配,不再执行以后的规则
‘next|N’ (next round)循环同一个规则,直到不能满足匹配
‘chain|C’ (chained with next rule)如果匹配该规则,则继续下面的有Chain标志的规则。
‘type|T=MIME-type’ (force MIME type)指定MIME类型
‘nosubreq|NS’ (used only if no internal sub-request)如果是内部子请求则跳过
‘nocase|NC’ (no case)忽略大小
‘qsappend|QSA’ (query string append)附加查询字符串
‘noescape|NE’ (no URI escaping of output)禁止URL中的字符自动转义成%[0-9]+的形式。
‘passthrough|PT’ (pass through to next handler)将重写结果运用于mod_alias
’skip|S=num’ (skip next rule(s))跳过下面几个规则
‘env|E=VAR:VAL’ (set environment variable)添加环境变量
实战
例子:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* - [F,L] 这里”-”表示没有替换,浏览器为IE和Opera的访客将被禁止访问。
例子:
RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
RewriteRule ([^/]+)\.html$ /test/$1.php [L]
#for example: /test/admin.html => /test/admin.php
限制目录只能显示图片
< IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^.*\.(gif|jpg|jpeg|png|swf)$
RewriteRule .*$ - [F,L]
< /IfModule>
Apache mod_rewrite规则重写的标志一览
R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
P(force proxy) 强制使用代理转发。
L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
N(next round) 重新从第一条规则开始运行重写过程。
C(chained with next rule) 与下一条规则关联
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
T=MIME-type(force MIME type) 强制MIME类型
NS (used only if no internal sub-request) 只用于不是内部子请求
NC(no case) 不区分大小写
QSA(query string append) 追加请求字符串
NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zed
PT(pass through to next handler) 传递给下一个处理
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
S=num(skip next rule(s)) 跳过num条规则
E=VAR:VAL(set environment variable) 设置环境变量
使用mod_rewrite时常用的服务器变量:
HTTP headers:HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_HOST, HTTP_ACCEPT
connection & request: REMOTE_ADDR, QUERY_STRING
server internals: DOCUMENT_ROOT, SERVER_PORT, SERVER_PROTOCOL
system stuff: TIME_YEAR, TIME_MON, TIME_DAY
RewriteRule规则表达式的说明:
. 匹配任何单字符
[chars] 匹配字符串:chars
[^chars] 不匹配字符串:chars
text1|text2 可选择的字符串:text1或text2
? 匹配0到1个字符
* 匹配0到多个字符
+ 匹配1到多个字符
^ 字符串开始标志
$ 字符串结束标志
\n 转义符标志
反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9)
反向引用 %N 用于 RewriteCond 中最后一个匹配的变量调用(1 <= N <= 9)
RewriteCond适用的标志符
‘nocase|NC’ (no case)忽略大小
‘ornext|OR’ (or next condition)逻辑或,可以同时匹配多个RewriteCond条件
RewriteRule适用的标志符‘redirect|R [=code]’ (force redirect)强迫重写为基于http开头的外部转向(注意URL的变化) 如:[R=301,L]
‘forbidden|F’ (force URL to be forbidden)重写为禁止访问
‘proxy|P’ (force proxy)重写为通过代理访问的http路径
‘last|L’ (last rule)最后的重写规则标志,如果匹配,不再执行以后的规则
‘next|N’ (next round)循环同一个规则,直到不能满足匹配
‘chain|C’ (chained with next rule)如果匹配该规则,则继续下面的有Chain标志的规则。
‘type|T=MIME-type’ (force MIME type)指定MIME类型
‘nosubreq|NS’ (used only if no internal sub-request)如果是内部子请求则跳过
‘nocase|NC’ (no case)忽略大小
‘qsappend|QSA’ (query string append)附加查询字符串
‘noescape|NE’ (no URI escaping of output)禁止URL中的字符自动转义成%[0-9]+的形式。
‘passthrough|PT’ (pass through to next handler)将重写结果运用于mod_alias
’skip|S=num’ (skip next rule(s))跳过下面几个规则
‘env|E=VAR:VAL’ (set environment variable)添加环境变量
实战
例子:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* - [F,L] 这里”-”表示没有替换,浏览器为IE和Opera的访客将被禁止访问。
例子:
RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
RewriteRule ([^/]+)\.html$ /test/$1.php [L]
#for example: /test/admin.html => /test/admin.php
限制目录只能显示图片
< IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^.*\.(gif|jpg|jpeg|png|swf)$
RewriteRule .*$ - [F,L]
< /IfModule>
May
19
为表达全国各族人民对四川汶川大地震遇难同胞的深切哀悼,国务院发布公告,决定2008年5月19日至21日为全国哀悼日。在此期间,全国和各驻外机构下半旗志哀,停止公共娱乐活动,外交部和我国驻外使领馆设立吊唁簿。5月19日14时28分起,全国人民默哀3分钟,届时汽车、火车、舰船鸣笛,防空警报鸣响。
1元或2元对城市的人来说不过是一次公交或零食,如果你关心灾区人的生活,请拿起你的手机,移动 联通 小灵通 大灵通 编辑1或2 发送至1069999301捐1元或2元
1元或2元对城市的人来说不过是一次公交或零食,如果你关心灾区人的生活,请拿起你的手机,移动 联通 小灵通 大灵通 编辑1或2 发送至1069999301捐1元或2元
Apr
18
1朵玫瑰代表——我的心中只有你 ONLY YOU!
2朵玫瑰代表—— 这世界只有我俩!
3朵玫瑰代表—— 我爱你 I LOVE YOU!
4朵玫瑰代表—— 至死不渝!
5朵玫瑰代表—— 由衷欣赏!
6朵玫瑰代表—— 互敬 互爱 互谅!
7朵玫瑰代表—— 我偷偷地爱著你!
8朵玫瑰代表—— 感谢你的关怀扶持及鼓励!
9朵玫瑰代表—— 长久 ALWAYS!
10朵玫瑰代表—— 十全十美 无懈可击!
11朵玫瑰代表—— 最爱 只在乎你一人!
12朵玫瑰代表—— 对你的爱与日俱增!
13朵玫瑰代表—— 友谊长存!
14朵玫瑰代表—— 骄傲!
15朵玫瑰代表—— 对你感到歉意I'M SORRY!
16朵玫瑰代表—— 多变不安的爱情!
17朵玫瑰代表—— 绝望无可挽回的爱!
18朵玫瑰代表—— 真诚与坦白!
19朵玫瑰代表—— 忍耐与期待!
20朵玫瑰代表—— 我仅一颗赤诚的心!
21朵玫瑰象征—— 真诚的爱!
22朵玫瑰象征—— 祝你好运!
25朵玫瑰象征—— 祝你幸福!
30朵玫瑰象征—— 信是有缘!
36朵玫瑰象征—— 浪漫!
40朵玫瑰象征—— 誓死不渝的爱情!
50朵玫瑰象征—— 邂逅不期而遇!
99朵玫瑰象征—— 天长地久 FOREVER!
100朵玫瑰象征—— 百分之百的爱 100% LOVE!
101朵玫瑰象征—— 最……最爱!
108朵玫瑰象征—— 求婚!
111朵玫瑰代表—— 无尽的爱
144朵玫瑰代表—— 爱你日日月月生生世世
365朵玫瑰代表—— 想你在每天
999朵玫瑰代表—— 天长地久、爱无止境
1001朵玫瑰代表—— 直到永远
2朵玫瑰代表—— 这世界只有我俩!
3朵玫瑰代表—— 我爱你 I LOVE YOU!
4朵玫瑰代表—— 至死不渝!
5朵玫瑰代表—— 由衷欣赏!
6朵玫瑰代表—— 互敬 互爱 互谅!
7朵玫瑰代表—— 我偷偷地爱著你!
8朵玫瑰代表—— 感谢你的关怀扶持及鼓励!
9朵玫瑰代表—— 长久 ALWAYS!
10朵玫瑰代表—— 十全十美 无懈可击!
11朵玫瑰代表—— 最爱 只在乎你一人!
12朵玫瑰代表—— 对你的爱与日俱增!
13朵玫瑰代表—— 友谊长存!
14朵玫瑰代表—— 骄傲!
15朵玫瑰代表—— 对你感到歉意I'M SORRY!
16朵玫瑰代表—— 多变不安的爱情!
17朵玫瑰代表—— 绝望无可挽回的爱!
18朵玫瑰代表—— 真诚与坦白!
19朵玫瑰代表—— 忍耐与期待!
20朵玫瑰代表—— 我仅一颗赤诚的心!
21朵玫瑰象征—— 真诚的爱!
22朵玫瑰象征—— 祝你好运!
25朵玫瑰象征—— 祝你幸福!
30朵玫瑰象征—— 信是有缘!
36朵玫瑰象征—— 浪漫!
40朵玫瑰象征—— 誓死不渝的爱情!
50朵玫瑰象征—— 邂逅不期而遇!
99朵玫瑰象征—— 天长地久 FOREVER!
100朵玫瑰象征—— 百分之百的爱 100% LOVE!
101朵玫瑰象征—— 最……最爱!
108朵玫瑰象征—— 求婚!
111朵玫瑰代表—— 无尽的爱
144朵玫瑰代表—— 爱你日日月月生生世世
365朵玫瑰代表—— 想你在每天
999朵玫瑰代表—— 天长地久、爱无止境
1001朵玫瑰代表—— 直到永远
Apr
5
<style type="text/css">
.filelist{ clear:both;}
.filelist ul li{list-style:none;float:left; width:200px;}
</style>
<%
response.Write("<div class='filelist'><ul><li>文件夹或文件</li><li>文件大小</li><li>最后修改时间</li></ul></div>")
filepath="文件夹相对路径"
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fileobj = fso.GetFolder(server.mappath(filepath))
Set fsofolders = fileobj.SubFolders
Set fsofile = fileobj.Files
For Each folder in fsofolders
response.Write("<div class='filelist'><ul><li>"&folder.name&"</li><li>"&folder.size&"</li><li>"&folder.datelastmodified&"</li></ul></div>")
Next
For Each file in fsofile
response.Write("<div class='filelist'><ul><li>"&file.name&"</li><li>"&file.size&"</li><li>"&file.datelastmodified&"</li></ul></div>")
Next
%>
Mar
18
比较少写正则,看到一些复杂的正则表达式时经常忘记某些符号的作用,从网络上收集一些相关资料。
正则表达式符号
字符 描述
\ 标记下一个字符是特殊字符或文字。例如,"n" 和字符 "n" 匹配。"\n" 则和换行字符匹配。序列 "\\" 和 "\" 匹配,而 "\(" 则和 "(" 匹配。
^ 匹配输入的开头。
$ 匹配输入的末尾。
* 匹配前一个字符零或多次。例如,"zo*" 与 "z" 或 "zoo" 匹配。
+ 匹配前一个字符一次或多次。例如,"zo+" 与 "zoo" 匹配,但和 "z" 不匹配。
? 匹配前一个字符零或一次。例如,"a?ve?" 和 "never" 中的 "ve" 匹配。
. 匹配除换行字符外的任何单个字符。
(pattern) 匹配 pattern 并记住该匹配。匹配上的子字符串,可以使用 Item [0]...[n],来从生成的 Matches 集合中取回。要匹配圆括号字符 ( ),则需使用 "\(" 或 "\)"。
x|y 匹配 x 或 y
{n} n 是非负整数。共匹配 n 次
{n,} n 是一个非负整数。至少匹配 n 次。例如,"o{2,}" 和 "Bob" 中的 "o" 不匹配,但和 "foooood" 中的所有 o 匹配。"o{1,}" 与 "o+" 等效。"o{0,}" 和 "o*" 等效。
{n,m} m 和 n 是非负整数。至少匹配 n 次而至多匹配 m 次。例如,"o{1,3}" 和 "fooooood" 中的前三个 o 匹配。"o{0,1}" 和 "o?" 等效。
[ 字符集合。匹配括号内的任一字符。例如,"[abc]" 和 "plain" 中的 "a" 匹配。
[^xyz 否定字符集合。匹配非括号内的任何字符。例如,"[^abc]" 和 "plain" 中的 "p" 匹配。
[a-z] 字符范围。和指定范围内的任一字符匹配。例如,"[a-z]" 匹配 "a" 到 "z"范围内的任一小写的字母表字符。
[^m-z] 否定字符范围。匹配不在指定范围内的任何字符。例如,"[m-z]" 匹配不在 "m" 到 "z"范围内的任何字符。
\b 匹配字的边界,也就是说,在字和空格之间的位置。例如,"er\b" 和 "never" 中的 "er" 匹配,但和 "verb" 中的 "er" 不匹配。
\B 匹配非字边界。"ea*r\B" 和 "never early" 中的 "ear" 匹配。
\d 匹配数字字符。等价于 [0-9]。
\D 匹配非数字字符。等价于 [^0-9]。
\f 匹配换页字符。
\n 匹配换行字符。
\r 匹配回车符字符。
\s 匹配任何空白,包括空格、制表、换页等。与 "[ \f\n\r\t\v]" 等效。
\S 匹配任何非空白字符。与 "[^ \f\n\r\t\v]" 等效。
\t 匹配制表字符。
\v 匹配垂直制表符。
\w 匹配包括下划线在内的任何字字符。与 "[A-Za-z0-9_]" 等效。
\W 匹配任何非字字符。与 "[^A-Za-z0-9_]" 等效。
\num 匹配 num,其中 num 是一个正整数。返回记住的匹配的引用。例如,"(.)\1" 匹配两个连续的同一字符。
\n 匹配 n,其中 n 是八进制换码值。八进制换码值必须是 1、2、或 3 位长。例如,"\11" 和 "\011" 都匹配制表字符。"\0011" 和 "\001" & "1" 是等效的。八进制换码值必须不超过 256。如果超过了,则只有前两位组成表达式。允许在正则表达式中使用 ASCII 码。
\xn 匹配 n,其中 n 是十六进制换码值。十六进制换码值必须正好是两位长。例如,"\x41" 与 "A" 匹配。"\x041" 和 "\x04" & "1" 是等效的。允许在正则表达式中使用 ASCII 码。
正则表达式符号
字符 描述
\ 标记下一个字符是特殊字符或文字。例如,"n" 和字符 "n" 匹配。"\n" 则和换行字符匹配。序列 "\\" 和 "\" 匹配,而 "\(" 则和 "(" 匹配。
^ 匹配输入的开头。
$ 匹配输入的末尾。
* 匹配前一个字符零或多次。例如,"zo*" 与 "z" 或 "zoo" 匹配。
+ 匹配前一个字符一次或多次。例如,"zo+" 与 "zoo" 匹配,但和 "z" 不匹配。
? 匹配前一个字符零或一次。例如,"a?ve?" 和 "never" 中的 "ve" 匹配。
. 匹配除换行字符外的任何单个字符。
(pattern) 匹配 pattern 并记住该匹配。匹配上的子字符串,可以使用 Item [0]...[n],来从生成的 Matches 集合中取回。要匹配圆括号字符 ( ),则需使用 "\(" 或 "\)"。
x|y 匹配 x 或 y
{n} n 是非负整数。共匹配 n 次
{n,} n 是一个非负整数。至少匹配 n 次。例如,"o{2,}" 和 "Bob" 中的 "o" 不匹配,但和 "foooood" 中的所有 o 匹配。"o{1,}" 与 "o+" 等效。"o{0,}" 和 "o*" 等效。
{n,m} m 和 n 是非负整数。至少匹配 n 次而至多匹配 m 次。例如,"o{1,3}" 和 "fooooood" 中的前三个 o 匹配。"o{0,1}" 和 "o?" 等效。
[ 字符集合。匹配括号内的任一字符。例如,"[abc]" 和 "plain" 中的 "a" 匹配。
[^xyz 否定字符集合。匹配非括号内的任何字符。例如,"[^abc]" 和 "plain" 中的 "p" 匹配。
[a-z] 字符范围。和指定范围内的任一字符匹配。例如,"[a-z]" 匹配 "a" 到 "z"范围内的任一小写的字母表字符。
[^m-z] 否定字符范围。匹配不在指定范围内的任何字符。例如,"[m-z]" 匹配不在 "m" 到 "z"范围内的任何字符。
\b 匹配字的边界,也就是说,在字和空格之间的位置。例如,"er\b" 和 "never" 中的 "er" 匹配,但和 "verb" 中的 "er" 不匹配。
\B 匹配非字边界。"ea*r\B" 和 "never early" 中的 "ear" 匹配。
\d 匹配数字字符。等价于 [0-9]。
\D 匹配非数字字符。等价于 [^0-9]。
\f 匹配换页字符。
\n 匹配换行字符。
\r 匹配回车符字符。
\s 匹配任何空白,包括空格、制表、换页等。与 "[ \f\n\r\t\v]" 等效。
\S 匹配任何非空白字符。与 "[^ \f\n\r\t\v]" 等效。
\t 匹配制表字符。
\v 匹配垂直制表符。
\w 匹配包括下划线在内的任何字字符。与 "[A-Za-z0-9_]" 等效。
\W 匹配任何非字字符。与 "[^A-Za-z0-9_]" 等效。
\num 匹配 num,其中 num 是一个正整数。返回记住的匹配的引用。例如,"(.)\1" 匹配两个连续的同一字符。
\n 匹配 n,其中 n 是八进制换码值。八进制换码值必须是 1、2、或 3 位长。例如,"\11" 和 "\011" 都匹配制表字符。"\0011" 和 "\001" & "1" 是等效的。八进制换码值必须不超过 256。如果超过了,则只有前两位组成表达式。允许在正则表达式中使用 ASCII 码。
\xn 匹配 n,其中 n 是十六进制换码值。十六进制换码值必须正好是两位长。例如,"\x41" 与 "A" 匹配。"\x041" 和 "\x04" & "1" 是等效的。允许在正则表达式中使用 ASCII 码。





