首先我们看一下这个.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。

最新文章

  1. python 的var_dump
  2. Func系列2:常用模块及API
  3. 防止sql注入。xss攻击 方法
  4. Java-hibernate的Hello World
  5. 键盘数字对应的ASCII码(keycode码)
  6. C++ Primer 有感(复制控制)
  7. 简介C#读取XML的方式(转)
  8. combineByKey
  9. whu 643 Soul Artist(二维BIT 区间更新,单点查询)
  10. AMAZON数据集
  11. python 虚拟环境操作 virtualenv +virtualenvwrapper
  12. java对象的六大原则
  13. X-Requested-With导致CSRF失败
  14. SWIFT解析天气JSON格式
  15. week3c:个人博客作业
  16. scrum心得和团队作业
  17. django-BBS(2)
  18. [jvm] JVM体系结构
  19. Eclipse 变量高亮显示设置
  20. 求范围内【l,r] , 内二进制的零比一多的数

热门文章

  1. alipay.trade.refund (统一收单交易退款接口)[支付宝退款]
  2. 【题解】【CodeForces712C】Memory and De-Evolution
  3. POJ 3322 Bloxorz I
  4. BZOJ 4195 程序自动分析
  5. PHP获取远程和本地文件信息(汇总)
  6. Android,加载离线Android API文档缓慢问题!
  7. MxNet : use the MxNet windows versioin
  8. 安卓代码迁移:ActionBarActivity: cannot be resolved to a type
  9. Eigen与Matlab语法及语义辞典
  10. servlet向浏览器输出信息