首先我们看一下这个.htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

这里面涉及到了3个指令:

1、RewriteEngine  最简单,控制重定向引擎的开关。第一条指令表示打开重定向引擎。

2、RewriteCond 指令略微复杂一些。

每一条这个指令定义一个条件,仅仅有这个条件满足时。跟在这个指令之后的那条 RewriteRule 才会起作用。注意:这个指令仅仅为之后的一条 RewriteRule 指令提供条件!比方,上面文件里的第二条 RewriteRule 指令就不须要必须在之前的 RewriteCond 指令满足的情况下才运行。

假设想同一时候推断多个条件的话。能够在后面加上 [OR] 标志,表示临时不结束推断。继续看下一条 RewriteCond 指令。

这条指令的第二个參数是被推断的值,在这里是server变量 %{REQUEST_FILENAME}

第三个參数是匹配模式,文件其中用到的几个匹配模式的意思分别为:

-s 推断第二个參数是否是server上存在的,大小大于0的常规文件;

-l 推断第二个參数是否是server上存在的,符号链接文件;

-d 推断第二个參数是否是server上存在的,目录;

假设符合这三条中的随意一条,就会运行第一条 RewriteRule 指令。

3、那么就让我们来看看 RewriteRule 指令。

RewriteRule 指令的第二个參数是个正則表達式。第一个起作用的 RewriteRule 指令的正则会应用于请求的URL地址(urlencode那种的);之后的RewriteRule指令则将正则应用于上一条指令的结果。

这条指令的第三个參数是被替换的值。- 表示保持原样。不替换。

这条指令后面也能够加标志。

比方 NC 标志的意思是 no case。L 标志就是 停止以下的 RewriteRule 指令的运行。

所以,ZF这个文件的意思就是假设是server中存在的文件,就不要做重定向。假设请求路径中的文件不存在。就重定向到index.php。

基于ZF中的.htaccess文件学习Apache的Rewrite语法的更多相关文章

  1. 程序中的.htaccess文件是做什么的

    程序中的.htaccess文件是做什么的 一.总结 一句话总结: htaccess=ht(Hypertext)+access=超文本入口 覆盖Apache服务器的默认配置 .htaccess(超文本访 ...

  2. 在apache中使用.htaccess文件的注意事项

    在apache的配置文件中: <VirtualHost *:80> ServerName tp5.com DocumentRoot d:/wamp/www/tp5.com/public & ...

  3. Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结

    一. 简单实例介绍一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置: 1)在httpd.conf文件里 ...

  4. Apache .htaccess文件

    今天在将ThinkPHP的URL模式由普通模式(URL_MODE=1)http://localhost/mythinkphp/index.php/Index/user/id/1.html改为重写模式 ...

  5. Apache伪静态(Rewrite).htaccess文件详解

    Htaccess(超文本访问)是一个简单的配置文件,它允许设计师,开发者和程序员通过它来改变Apache Web服务器的配置.这些功能包括用户重定向.URL重写(url rewrite,国内很多称为伪 ...

  6. Apache 中httpd.conf文件配置详解(转载)

    httpd.conf文件配置详解   Apache的基本设置主要交由httpd.conf来设定管理,我们要修改Apache的相关设定,主要还是通过修改httpd.cong来实现.下面让我们来看看htt ...

  7. 学习Apache(六)

    Apache 是一款使用量排名第一的 web 服务器,LAMP 中的 A 指的就是它.由于其开源.稳定.安全等特性而被广泛使用.下边记录了使用 Apache 以来经常用到的功能,做此梳理,作为日常运维 ...

  8. .htaccess文件讲解

    .htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录.作为用户 ...

  9. .htaccess 文件来进行用户组的目录权限访问控制

    <IfModule rewrite_module>RewriteEngine onRewriteRule ^((?:bootstrap|css|img|js||MathJax|video) ...

随机推荐

  1. sublime text 快键键

    sublime text 的快捷键ctrl+l                              选择整行(按住-继续选择下行)ctrl+shift+k                    ...

  2. Redis(三)-Ubuntu下安装

    Ubuntu 下安装 在 Ubuntu 系统安装 Redi 可以使用以下命令: $sudo apt-get update $sudo apt-get install redis-server 启动 R ...

  3. Ionic学习记录(一):ionic及cordova安装、创建第一个应用、项目结构

    目录: 一.ionic的安装 二.创建第一个应用程序 三.浏览器中预览应用 四.项目结构 五.添加页面 一.ionic的安装 使用Ionic创建和开发应用程序主要通过Ionic命令行实用程序(“CLI ...

  4. # secure_link_module模块

    作用 制定并允许检查请求的链接的真实性以及保护资源免遭未经授权的访问 限制链接生效周期 首先检查nginx是否已安装模块 #nginx -V 输出nginx所有已安装模块,检查是否有ngx_http_ ...

  5. centos下使用shell+expect远程登录主机

    # 安装expect yum install expect # 新建脚本文件running #!/usr/bin/expect spawn /usr/bin/ssh root@114.114.114. ...

  6. MessageDigest 加密和解密2

    package com.drawthink.platform.util; import java.security.MessageDigest; import java.security.NoSuch ...

  7. MTD 门店统计

    DROP TABLE #MTD ' ,@endDate date = cast(getdate() as date) CREATE TABLE #MTD(bydate date) DECLARE @c ...

  8. retrofit post请求多文件,partMap用法

    1. APIService 定义注解 @Multipart @POST("cyxx/Feedback/add.do") Observable<ResponseBody> ...

  9. Android studio 添加引用新建类库

    1.新建一个工程包 2.修改AndroidManifest.xml 将AndroidManifest.xml 修改为 <manifest xmlns:android="http://s ...

  10. css3基础篇三

    CSS3 文本阴影 在 CSS3 中,text-shadow 可向文本应用阴影. 您能够规定水平阴影.垂直阴影.模糊距离,以及阴影的颜色: 实例 向标题添加阴影: h1 { text-shadow: ...