zoukankan      html  css  js  c++  java
  • 基于ZF中的.htaccess文件学习Apache的Rewrite语法

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

  • 相关阅读:
    一个网络扫描程序
    ASCII
    一个linux下c++程序
    VC数字图像处理编程
    人际关系的55个绝招
    一些函数
    【转】Vim命令合集以及乱码问题解决
    【转】PHP程序员的技术成长规划
    【转】Nginx 服务器安装及配置文件详解
    【转】PHP网站常见安全漏洞,及相应防范措施总结
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6950407.html
Copyright © 2011-2022 走看看