`
zyslovely
  • 浏览: 231594 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Rewritecond介绍

阅读更多
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]
分享到:
评论

相关推荐

    浅析Apache中RewriteCond规则参数的详细介绍

    RewriteCond指令是mod_rewrite模块的一个核心组件,它用来设置条件,只有当条件满足时,紧随其后的 RewriteRule才会被应用。在了解RewriteCond的参数之前,我们先来看看它的基本语法和用途。 RewriteCond指令的一般...

    zencart静态SEO URL重写插件3.6.3

    这款插件也是大家比较喜欢的,唯一的缺点就是不自动生成友好的url,需要你手动填写url,去后台分类,产品处单击更新下才能生成,现在官方有支持zencart 1.5的,强创网络这里提供下载地址给大家下载,顺便介绍大概...

    关于Apache_mod_rewite的中文配置和RewriteRule规则详细介绍

    关于Apache_mod_rewrite的中文配置与RewriteRule规则详细介绍 在当今互联网时代,网站优化与安全性是网站管理员关注的焦点。Apache_mod_rewrite作为一个强大的工具,它不仅能够帮助网站优化URL结构,提升用户体验,...

    Apache开启伪静态

    本文将详细介绍 Apache 开启伪静态的配置和应用。 一、加载 Rewrite 模块 要使用 Rewrite 模块,首先需要在 Apache 配置文件 httpd.conf 中加载该模块。在 conf 目录下找到 LoadModule rewrite_module modules/mod...

    IsApi 中文帮助手册

    下面将详细介绍 ISApi rewrite 的配置和使用方法。 ISApi rewrite 的配置文件 ------------------------ ISApi rewrite 的配置文件分为两种形式:GLOBAL(SERVER-LEVEL)和 INDIVIDUAL(SITE-LEVAL)。GLOBAL 配置...

    最简单快速的Apache二级域名实现方法介绍

    本文将详细介绍一种最简单快速的方法来实现Apache二级域名。 首先,你需要确保你的顶级域名(如 `domain.com`)已经进行了泛域名解析。泛域名解析意味着任何子域名(如 `www`, `bbs`, `anyname`)都将指向同一IP...

    Apache Web服务器.htaccess文件配置.docx

    这篇文章主要介绍了如何使用`.htaccess`文件实现一系列功能,包括阻止特定IP或搜索引擎爬虫访问、限制特定国家IP的访问、防止图片和文件盗链以及创建自定义错误页面。 首先,`.htaccess`文件可以用来屏蔽特定的搜索...

    apach防盗链配置

    本文将详细介绍如何在Apache服务器上进行防盗链配置。 一、理解防盗链原理 防盗链(Hotlinking)是指其他网站通过直接引用(即HTML中的`&lt;img&gt;`、`&lt;script&gt;`等标签)你网站上的资源,使得用户在访问其他网站时,...

    htaccess重写规则的功能作用.docx

    以下将详细介绍 `.htaccess` 文件中的一些关键指令及其作用: 1. **RewriteEngine**: 这个指令用于开启或关闭URL重写引擎。`RewriteEngine On` 表示启用重写功能,`RewriteEngine Off` 则关闭。它是所有重写规则的...

    WordPress 防盗链设置方法分享

    本文将详细介绍如何在WordPress中设置防盗链,以保护你的网站资源。 首先,你需要登录到你的虚拟主机的管理面板,例如cPanel。在文件管理器中,找到WordPress的根目录,并确保显示隐藏文件。找到名为`.htaccess`的...

    在IIS下真正能用的ISAPI-Rewrite防盗链规则写法

    本文主要介绍如何在IIS下利用ISAPI_Rewrite编写防盗链规则,以保护网站资源免受非法引用。 一、完全屏蔽所有盗链来源的规则 这种规则会阻止所有非本域的请求访问指定类型的文件,例如图片。具体写法如下: ```...

    iis+httpd.ini实现伪静态

    由于这里提到的是httpd.ini,我们将重点介绍这种方法。httpd.ini文件通常被用在Apache服务器上,但在IIS中,通过安装ISAPI_Rewrite插件,也可以使用该文件进行URL重写。 ISAPI_Rewrite是一个强大的URL重写工具,它...

    配置apache开启虚拟路径(伪静态)的方法.zip

    本文将详细介绍如何配置Apache以开启虚拟路径(也称为虚拟主机)和实现伪静态设置。 首先,虚拟路径是Apache允许在同一台服务器上托管多个独立域名或网站的功能。这通过使用VirtualHost配置实现。在Apache的配置...

    伪静态配置实例大全

    以Apache和Nginx两个常见的Web服务器为例,介绍如何进行伪静态配置。 1. **Apache伪静态配置** 在Apache中,通常通过`.htaccess`文件进行配置。例如,对于PHP环境,一个简单的配置示例是: ```apacheconf ...

    URL重写配置

    以下是对如何在ThinkPHP项目中实现URL重写的详细介绍。 #### 一、理解URL重写的基本概念 URL重写(URL Rewriting)是一种服务器端的技术,用于将不美观或不符合标准的URL地址转换为更加友好、易于理解和记忆的形式...

    ThinkPHP中隐藏index.php文件路径的方法

    本文将详细介绍如何在ThinkPHP项目中隐藏`index.php`文件路径,具体步骤包括:修改Apache服务器配置文件、创建`.htaccess`文件以及调整项目配置文件。 #### Apache服务器配置调整 1. **定位httpd.conf文件** ...

    php实现依据url自动生成缩略图的方法__2.docx

    以下是一个详细的方法介绍: 首先,我们需要理解整个流程。当用户尝试访问一个缩略图URL(例如:http://localhost/supload/news/2021/07/21/1.jpg)时,如果这个图片实际不存在,Apache服务器会通过`.htaccess`文件...

    七只熊文库开源CMS

    ## 介绍 七只熊是类似百度文库,能够实现文档分享、售卖的文库CMS系统。用户上传源文档后,七只熊会自动将文档进行转码成HTML,成功后,将文档HTML返回文库CMS。实现免插件、在线浏览。 ## 快速体验入口 文库前端...

    WebSphere6.1+IHS集群环境下的SSL配置方法.pdf

    `RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD|PUT|DELETE|CONNECT) RewriteRule .* - [F]` 最后,将 AllowOverride None 修改为 AllowOverride ALL,以允许目录级别的配置。 启用 SSL 启用 SSL 是...

Global site tag (gtag.js) - Google Analytics