31 Mar, 2010
in 网络编程
by admin
正则表达式的一些用法示例:
文本
. 任意一个单字符
[chars] 字符类: “chars”中的任意一个字符
[^chars] 字符类: 不在”chars”中的字符
text1|text2 选择: text1 或 text2
量词
? 前面的字符出现 0 或 1 次
* 前面的字符出现 0 或 N 次(N > 0)
+ 前面的字符出现 1 或 N 次(N > 1)
分组
(text) text 组
(常用于设置一个选择的边界,或用于生成后引用:
在RewriteRule中可以用 $N 引用第N个分组)
锚
^ 锚定到行首
$ 锚定到行尾
转义
\c 对给定的字符c进行转义
(比如对”.[]()”进行转义,等等)
31 Mar, 2010
in 服务器类
by admin
RewriteCond指令格式
语法: RewriteCond TestString CondPattern
1) TestString是一个纯文本的字符串,但是可以包含可扩展的成分
2) CondPattern是条件pattern, 即一个应用于当前实例TestString的正则表达式, 即TestString将会被计算然后与CondPattern匹配.
3) 另外,还可以为CondPattern追加特殊的标记[flags] 作为RewriteCond指令的第三个参数。Flags是一个以逗号分隔的以下标记的列表:
‘nocase|NC’ 它使测试忽略大小写, 即TestString和CondPattern无大小写检查
‘ornext|OR’ 它以OR方式组合若干规则的条件,而不是隐含的AND。
31 Mar, 2010
in 服务器类
by admin
RewriteLog 指令 说 明 设置重写引擎日志的文件名 语 法 RewriteLog file-path 作 用域 server config, virtual host 状 态 扩展(E) 模 块 mod_rewrite RewriteLog指 令设置用于记录所有重写操作的日志文件的名称。如果此文件名不以斜杠(‘/‘) 开头,则它是相对于Server Root的,此指令应该在每个服务器级别的配置中仅仅出现一次。 如果要关闭对重写操作的记录,不推荐将Filename设为/dev/null ,因为,虽然重写引擎不能输出记录了,但仍会在内部建立这个日志文件,这 样会使服务器速度降低,而且对管理员毫无益处!要关闭日志,可以删除或注解RewriteLog指令, 或者使用”RewriteLogLevel 0“的设置
26 Mar, 2010
in 网络编程
by admin
本文阐述在实际应用中如何解决网管所面临的基于URL的典型问题,并详细描述了如何配置URL重写规则集以解决这些问题。
注意:根据你的服务器配置,有可能必须对这里的例子作些小修改,比如,在额外启用mod_alias和mod_userdir的 情况下要增加[PT]标志,或者为了适应目录级(.htaccess)的配置而将针对服务器级的规 则集进行重写。对一个特定的规则集应该先透彻理解然后再考虑应用,这样才能避免出现问题。
规范化URL
描述:
在有些web服务器上,一个资源会拥有多个URL。在实际应用和发布中应该使用的是规范的URL,其他的则是 简写或者只在内部使用。无论用户在请求中使用什么形式的URL,最终看见的都应该是规范的URL。
26 Mar, 2010
in 网络编程
by admin
Apache的URL重写规则的标志详细说明
1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到 外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联
16 Mar, 2010
in 设计重构
by admin
做PHP项目中需要用到URL重定向技术,基本上的需求就是把比如 /user/heiyeluren 重定向到 /user.php?uid=heiyeluren 之类的URL上,当然,你也可以把 /article/200707291011.html重定向到 /article.php?id=200507291011 之类的,模拟好像是静态页面,能够隐藏URL真实地址,有助于雨鞋基本的安全防范等等。那么好像rewrite是个很好的解决办法。
要在 Apache里运行rewrite的话,必须先安装mod_rewrite的组件,就是一个mod_rewrite.c文件,然后必须在./configure的时候要放上mod_rewrite就能安装。
一般配置rewrite的话,可以在httpd.conf里面配置,也能在网页当前目录的.htaccess文件里进行定义来决定重定向去那个文件,那样的话,就非常具有灵活性了,同样也能够适合虚拟主机用户来做。
我们看一个.htaccess文件的例子
15 Mar, 2010
in 网络编程
by admin
一、 为什么需要用重写规则
—- 网站的生命在于不断地进行更新和维护,根据业务发展的需求转移服务器进行维护、重新组织目录结构、变换URL甚至改变到新的域名等情况是经常发生的。为了 让客户不会因此受到任何影响,最好的方法就是使用Apache Rewrite Rule(重写规则)。
二、重写规则的作用范围
—- 1.使用在Apache主配置文件httpd.conf中。
—- 2.使用在httpd.conf里定义的虚拟主机配置中。
—- 3.使用在基本目录的跨越配置文件.htaccess中。
15 Mar, 2010
in 服务器类
by admin
第一:检测 apache是否开启mod_rewrite
通过php提供的phpinfo()函数查看环境配置,在“apache2handler —> Loaded Modules”里看是否有“mod_rewrite”模块,如没开启则在apache配置文件httpd.conf 中找到“#LoadModule rewrite_module modules/mod_rewrite.so”去掉前面的“#”号,重启apache即可
第二:检测apache是否支持“.htaccess”
如测试中不支持 “.htaccess”,那在apache配置文件httpd.conf 中找到“”与“”内的“AllowOverride None”改为“AllowOverride All”,重启apache即可
12 Apr, 2009
in 服务器类
by admin
在线将apache正则转换成nginx正则:http://www.anilcetin.com/convert-apache-htaccess-to-nginx/