- 浏览: 231607 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
wahahachuang5:
web实时推送技术使用越来越广泛,但是自己开发又太麻烦了,我觉 ...
html5实现websocket 长连接 -
远方的彪:
我想问一下,现在的许多公司对接口测试要求比较高吗,换句话说就是 ...
接口测试 -
lk123456sc:
HtmlUnit是很好很强大的工具,这篇文章写了很实用的简单例 ...
htmlutil -
letmedown:
您是70后的牛人。谢谢。
java源码阅读方法 -
fnet:
是的,同样一个应用程序,jdk32 确实比 jdk64内存使用 ...
jvm32位、64位区别
RewriteCond Syntax: RewriteCond TestString CondPattern [flags] RewriteCond指令定义一条规则条件。在一条RewriteRule指令前面可能会有一条或多条RewriteCond指令,只有当自身的模板(pattern)匹配成功且这些条件也满足时规则才被应用于当前URL处理。 TestString是一个字符串,除了包含普通的字符外,还可以包括下列的可扩展结构:
1. $N,RewriteRule后向引用,其中(0 <= N <= 9) $N引用紧跟在RewriteCond后面的RewriteRule中模板中的括号中的模板在当前URL中匹配的数据。
2. %N,RewriteCond后向引用,其中(0 <= N <= 9) %N引用最后一个RewriteCond的模板中的括号中的模板在当前URL中匹配的数据。
3. ${mapname:key|default},RewriteMap扩展. 具体参见RewriteMap
4,5详见附录
6. 特别说明:
o SCRIPT_FILENAME和REQUEST_FILENAME变量含有相同的值,也就是Apache服务器内部数据结构request_rec的filename字段的值。第一个变量是一个CGI变量,而第二个则与REQUEST_URI(含有request_rec数据结构中uri字段的值)保持一致。
o %{ENV:variable}中的variable可以是任何环境变量的名字。对其值的查找,先通过Apache内部的数据结构,(如找不到)再在Apache服务器进程中通过getenv()查找。
o %{HTTP:header}中的header可以是任何HTTP MIME-header的名字,其值通过查找HTTP请求信息而得。
o %{LA-U:variable} 用来引用后续API阶段中定义的、当前还不知道的值,具体实现是通过执行一个基于URL的内部的sub-request来决定的variable的最终的值。例如,假如你想在服务器范围内利用REMOTE_USER的值来完成重写,但这个值是在验证阶段设置的,而验证阶段是在URL转换阶段的后面。从另一方面讲,由于mod_rewrite在修补(fixup)API阶段进行目录范围的重写,而修补阶段在验证阶段的后面,所以此时只要用%{REMOTE_USER}就可以取得该值了。
o %{LA-F:variable},执行一个基于文件名字(filename)的内部sub-request来决定variable的最终的值。大多数时间内,这和LA-U相同。
CondPattern是一个条件模板,也就是说,是一个扩展正则式(extended regular expression),用与跟TestString进行匹配。作为一个标准的扩展正则式,CondPattern有以下补充:
1. 可以在模板串前增加一个!前缀,以用表示不匹配模板。但并不是所有的test都可以加!前缀。
2. CondPattern中可以使用以下特殊变量:
o '<CONDPATTERN' (小于,基于字母顺序) 将condPattern当作一个普通字符串,将它和TestString进行比较,当TestString 的字符小于CondPattern为真.
o '>CondPattern' (大于) 将condPattern当作一个普通字符串,将它和TestString进行比较,当TestString 的字符大于CondPattern为真.
o '=CondPattern' (等于) 将condPattern当作一个普通字符串,将它和TestString进行比较,当TestString 与CondPattern完全相同时为真.如果CondPattern只是 "" (两个引号紧挨在一起) 此时需TestString 为空字符串方为真.
o '-d' (是否为目录) 将testString当作一个目录名,检查它是否存在以及是否是一个目录.
o '-f' (是否是regular file) 将testString当作一个文件名,检查它是否存在以及是否是一个regular文件.
o '-s' (是否为长度不为0的regular文件) 将testString当作一个文件名,检查它是否存在以及是否是一个长度大于0的regular文件
o '-l' (是否为symbolic link) 将testString当作一个文件名,检查它是否存在以及是否是一个 symbolic link.
o '-F' (通过subrequest来检查某文件是否可访问) 检查TestString是否是一个合法的文件,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。
o '-U' (通过subrequest来检查某个URL是否存在) 检查TestString是否是一个合法的URL,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。
[flags]是第三个参数,多个标志之间用逗号分隔。
1. 'nocase|NC' (不区分大小写) 在扩展后的TestString和CondPattern中,比较时不区分文本的大小写。注意,这个标志对文件系统和subrequest检查没有影响.
2. 'ornext|OR' (建立与下一个条件的或的关系) 默认的情况下,二个条件之间是AND的关系,用这个标志将关系改为OR。例如: RewriteCond %{REMOTE_HOST} ^host1.* [OR] RewriteCond %{REMOTE_HOST} ^host2.* [OR] RewriteCond %{REMOTE_HOST} ^host3.* RewriteRule ... 如果没有[OR]标志,需要写三个条件/规则.
例子:根据客户端浏览器的不同,返回不同的首页面。 RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* RewriteRule ^/$ /homepage.max.html [L] RewriteCond %{HTTP_USER_AGENT} ^Lynx.* RewriteRule ^/$ /homepage.min.html [L] RewriteRule ^/$ /homepage.std.html [L]
当你在地址栏里输入 sina.com.cn google.cn
看看有什么变化?是不是会自动跳转到 www.sina.com.cn www.google.cn
这一技术通过apache的rewrite可以实现,当然你得把 不带www的域名指向你服务器的IP
要是虚拟主机的话,得在viralhost段加入 ServerAlias xxx.com
然后打开重写引擎功能
RewriteEngine On
能过rewritecond判断主机名是否带www
RewriteCond %{HTTP_HOST} ^xxx\.com$ [NC]
然后来一条
RewriteRule ^/(.*)$ http://www.xxx.com/$1 [R=301,L]
OK,重起apache,现在在浏览器中输入 xxx.com 看看是不是自动变成了www.xxx.com了呢。
重新整理一下就是:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^xxx\.com$ [NC]
RewriteRule ^/(.*)$ http://www.xxx.com/$1 [R=301,L]
1. $N,RewriteRule后向引用,其中(0 <= N <= 9) $N引用紧跟在RewriteCond后面的RewriteRule中模板中的括号中的模板在当前URL中匹配的数据。
2. %N,RewriteCond后向引用,其中(0 <= N <= 9) %N引用最后一个RewriteCond的模板中的括号中的模板在当前URL中匹配的数据。
3. ${mapname:key|default},RewriteMap扩展. 具体参见RewriteMap
4,5详见附录
6. 特别说明:
o SCRIPT_FILENAME和REQUEST_FILENAME变量含有相同的值,也就是Apache服务器内部数据结构request_rec的filename字段的值。第一个变量是一个CGI变量,而第二个则与REQUEST_URI(含有request_rec数据结构中uri字段的值)保持一致。
o %{ENV:variable}中的variable可以是任何环境变量的名字。对其值的查找,先通过Apache内部的数据结构,(如找不到)再在Apache服务器进程中通过getenv()查找。
o %{HTTP:header}中的header可以是任何HTTP MIME-header的名字,其值通过查找HTTP请求信息而得。
o %{LA-U:variable} 用来引用后续API阶段中定义的、当前还不知道的值,具体实现是通过执行一个基于URL的内部的sub-request来决定的variable的最终的值。例如,假如你想在服务器范围内利用REMOTE_USER的值来完成重写,但这个值是在验证阶段设置的,而验证阶段是在URL转换阶段的后面。从另一方面讲,由于mod_rewrite在修补(fixup)API阶段进行目录范围的重写,而修补阶段在验证阶段的后面,所以此时只要用%{REMOTE_USER}就可以取得该值了。
o %{LA-F:variable},执行一个基于文件名字(filename)的内部sub-request来决定variable的最终的值。大多数时间内,这和LA-U相同。
CondPattern是一个条件模板,也就是说,是一个扩展正则式(extended regular expression),用与跟TestString进行匹配。作为一个标准的扩展正则式,CondPattern有以下补充:
1. 可以在模板串前增加一个!前缀,以用表示不匹配模板。但并不是所有的test都可以加!前缀。
2. CondPattern中可以使用以下特殊变量:
o '<CONDPATTERN' (小于,基于字母顺序) 将condPattern当作一个普通字符串,将它和TestString进行比较,当TestString 的字符小于CondPattern为真.
o '>CondPattern' (大于) 将condPattern当作一个普通字符串,将它和TestString进行比较,当TestString 的字符大于CondPattern为真.
o '=CondPattern' (等于) 将condPattern当作一个普通字符串,将它和TestString进行比较,当TestString 与CondPattern完全相同时为真.如果CondPattern只是 "" (两个引号紧挨在一起) 此时需TestString 为空字符串方为真.
o '-d' (是否为目录) 将testString当作一个目录名,检查它是否存在以及是否是一个目录.
o '-f' (是否是regular file) 将testString当作一个文件名,检查它是否存在以及是否是一个regular文件.
o '-s' (是否为长度不为0的regular文件) 将testString当作一个文件名,检查它是否存在以及是否是一个长度大于0的regular文件
o '-l' (是否为symbolic link) 将testString当作一个文件名,检查它是否存在以及是否是一个 symbolic link.
o '-F' (通过subrequest来检查某文件是否可访问) 检查TestString是否是一个合法的文件,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。
o '-U' (通过subrequest来检查某个URL是否存在) 检查TestString是否是一个合法的URL,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。
[flags]是第三个参数,多个标志之间用逗号分隔。
1. 'nocase|NC' (不区分大小写) 在扩展后的TestString和CondPattern中,比较时不区分文本的大小写。注意,这个标志对文件系统和subrequest检查没有影响.
2. 'ornext|OR' (建立与下一个条件的或的关系) 默认的情况下,二个条件之间是AND的关系,用这个标志将关系改为OR。例如: RewriteCond %{REMOTE_HOST} ^host1.* [OR] RewriteCond %{REMOTE_HOST} ^host2.* [OR] RewriteCond %{REMOTE_HOST} ^host3.* RewriteRule ... 如果没有[OR]标志,需要写三个条件/规则.
例子:根据客户端浏览器的不同,返回不同的首页面。 RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* RewriteRule ^/$ /homepage.max.html [L] RewriteCond %{HTTP_USER_AGENT} ^Lynx.* RewriteRule ^/$ /homepage.min.html [L] RewriteRule ^/$ /homepage.std.html [L]
当你在地址栏里输入 sina.com.cn google.cn
看看有什么变化?是不是会自动跳转到 www.sina.com.cn www.google.cn
这一技术通过apache的rewrite可以实现,当然你得把 不带www的域名指向你服务器的IP
要是虚拟主机的话,得在viralhost段加入 ServerAlias xxx.com
然后打开重写引擎功能
RewriteEngine On
能过rewritecond判断主机名是否带www
RewriteCond %{HTTP_HOST} ^xxx\.com$ [NC]
然后来一条
RewriteRule ^/(.*)$ http://www.xxx.com/$1 [R=301,L]
OK,重起apache,现在在浏览器中输入 xxx.com 看看是不是自动变成了www.xxx.com了呢。
重新整理一下就是:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^xxx\.com$ [NC]
RewriteRule ^/(.*)$ http://www.xxx.com/$1 [R=301,L]
发表评论
-
[zz].bash_profile .bashrc /etc/profile /etc/bashrc区别
2012-05-20 22:35 1222http://hi.baidu.com/firstprinci ... -
linux top命令 排序
2012-04-06 17:10 1715s -改变画面更新频率 l -关闭或开启第一部分第一行to ... -
jvm32位、64位区别
2012-03-27 11:08 29347理论上来说32位的JVM有4G的堆大小限制。但是因为各种条件限 ... -
linux free命令
2012-03-05 16:23 1100前段时间有个项目的用C写的,性能测试时发现内存泄露问题。关于怎 ... -
通过load值查服务器问题
2012-03-05 16:05 5639几乎每个接触类 Unix 操作系统的工程师都知道如何查看系统负 ... -
memcached内存分配原理
2012-02-22 17:32 1778http://xenojoshua.com/2011/04/d ... -
jvm内存调优
2012-02-20 22:46 1171JVM 调优,首先应从内存开始,尤其是在真正的的web服务部署 ... -
nginx学习
2012-02-10 19:55 1062nginx的Status Code499 rfc2616中,h ... -
apache与nginx
2012-02-09 18:28 820apache默认最大连接数256 nginx 默认最大连接数 ... -
Linux系统监控工具之vmstat详解
2012-01-12 19:31 956三、使用vmstat 1.用法 vmstat [-a] [ ... -
jstat应用详解
2012-01-12 11:34 2078http://docs.oracle.com/javase/1 ... -
Linux常用命令速查备忘
2012-01-03 20:15 868http://www.ha97.com/4338.html P ... -
Linux Web服务器网站故障分析常用的命令
2012-01-03 20:04 907http://www.ha97.com/4392.html ... -
linux 磁盘命令
2011-12-19 20:44 878linux中df命令参数功能: ... -
tomcat server.xml配置详解
2011-12-14 19:38 798zzzzzzzzzzhttp://dcbjavaeye.ite ... -
JAVA线程dump的分析 --- jstack pid
2011-12-14 11:48 891zzhttp://www.blogjava.net/jzone ... -
jmap使用以及 linux下查看进程的内存使用情况
2011-12-08 23:12 46411、top命令 top -d 1 -p pid [,pi ... -
tomcat 整体架构
2011-12-07 23:34 9891. Tomcat的整体框架结构 Tomcat的基本框架 ... -
Linux查看端口使用状态、关闭端口方法
2011-12-06 23:23 1149前提:首先你必须知道,端口不是独立存在的,它是依附于进程的。某 ... -
shell grep
2011-11-24 00:36 1013grep -E 'stra|strb' // 查找即包含str ...
相关推荐
RewriteCond指令是mod_rewrite模块的一个核心组件,它用来设置条件,只有当条件满足时,紧随其后的 RewriteRule才会被应用。在了解RewriteCond的参数之前,我们先来看看它的基本语法和用途。 RewriteCond指令的一般...
这款插件也是大家比较喜欢的,唯一的缺点就是不自动生成友好的url,需要你手动填写url,去后台分类,产品处单击更新下才能生成,现在官方有支持zencart 1.5的,强创网络这里提供下载地址给大家下载,顺便介绍大概...
关于Apache_mod_rewrite的中文配置与RewriteRule规则详细介绍 在当今互联网时代,网站优化与安全性是网站管理员关注的焦点。Apache_mod_rewrite作为一个强大的工具,它不仅能够帮助网站优化URL结构,提升用户体验,...
本文将详细介绍 Apache 开启伪静态的配置和应用。 一、加载 Rewrite 模块 要使用 Rewrite 模块,首先需要在 Apache 配置文件 httpd.conf 中加载该模块。在 conf 目录下找到 LoadModule rewrite_module modules/mod...
下面将详细介绍 ISApi rewrite 的配置和使用方法。 ISApi rewrite 的配置文件 ------------------------ ISApi rewrite 的配置文件分为两种形式:GLOBAL(SERVER-LEVEL)和 INDIVIDUAL(SITE-LEVAL)。GLOBAL 配置...
本文将详细介绍一种最简单快速的方法来实现Apache二级域名。 首先,你需要确保你的顶级域名(如 `domain.com`)已经进行了泛域名解析。泛域名解析意味着任何子域名(如 `www`, `bbs`, `anyname`)都将指向同一IP...
这篇文章主要介绍了如何使用`.htaccess`文件实现一系列功能,包括阻止特定IP或搜索引擎爬虫访问、限制特定国家IP的访问、防止图片和文件盗链以及创建自定义错误页面。 首先,`.htaccess`文件可以用来屏蔽特定的搜索...
本文将详细介绍如何在Apache服务器上进行防盗链配置。 一、理解防盗链原理 防盗链(Hotlinking)是指其他网站通过直接引用(即HTML中的`<img>`、`<script>`等标签)你网站上的资源,使得用户在访问其他网站时,...
以下将详细介绍 `.htaccess` 文件中的一些关键指令及其作用: 1. **RewriteEngine**: 这个指令用于开启或关闭URL重写引擎。`RewriteEngine On` 表示启用重写功能,`RewriteEngine Off` 则关闭。它是所有重写规则的...
本文将详细介绍如何在WordPress中设置防盗链,以保护你的网站资源。 首先,你需要登录到你的虚拟主机的管理面板,例如cPanel。在文件管理器中,找到WordPress的根目录,并确保显示隐藏文件。找到名为`.htaccess`的...
本文主要介绍如何在IIS下利用ISAPI_Rewrite编写防盗链规则,以保护网站资源免受非法引用。 一、完全屏蔽所有盗链来源的规则 这种规则会阻止所有非本域的请求访问指定类型的文件,例如图片。具体写法如下: ```...
由于这里提到的是httpd.ini,我们将重点介绍这种方法。httpd.ini文件通常被用在Apache服务器上,但在IIS中,通过安装ISAPI_Rewrite插件,也可以使用该文件进行URL重写。 ISAPI_Rewrite是一个强大的URL重写工具,它...
本文将详细介绍如何配置Apache以开启虚拟路径(也称为虚拟主机)和实现伪静态设置。 首先,虚拟路径是Apache允许在同一台服务器上托管多个独立域名或网站的功能。这通过使用VirtualHost配置实现。在Apache的配置...
以Apache和Nginx两个常见的Web服务器为例,介绍如何进行伪静态配置。 1. **Apache伪静态配置** 在Apache中,通常通过`.htaccess`文件进行配置。例如,对于PHP环境,一个简单的配置示例是: ```apacheconf ...
以下是对如何在ThinkPHP项目中实现URL重写的详细介绍。 #### 一、理解URL重写的基本概念 URL重写(URL Rewriting)是一种服务器端的技术,用于将不美观或不符合标准的URL地址转换为更加友好、易于理解和记忆的形式...
本文将详细介绍如何在ThinkPHP项目中隐藏`index.php`文件路径,具体步骤包括:修改Apache服务器配置文件、创建`.htaccess`文件以及调整项目配置文件。 #### Apache服务器配置调整 1. **定位httpd.conf文件** ...
以下是一个详细的方法介绍: 首先,我们需要理解整个流程。当用户尝试访问一个缩略图URL(例如:http://localhost/supload/news/2021/07/21/1.jpg)时,如果这个图片实际不存在,Apache服务器会通过`.htaccess`文件...
## 介绍 七只熊是类似百度文库,能够实现文档分享、售卖的文库CMS系统。用户上传源文档后,七只熊会自动将文档进行转码成HTML,成功后,将文档HTML返回文库CMS。实现免插件、在线浏览。 ## 快速体验入口 文库前端...
`RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD|PUT|DELETE|CONNECT) RewriteRule .* - [F]` 最后,将 AllowOverride None 修改为 AllowOverride ALL,以允许目录级别的配置。 启用 SSL 启用 SSL 是...