• 基于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。

  • 相关阅读:
    VUE报错: Duplicate keys detected: '0'. This may cause an update error.
    VUE中 resource如何引入和GET POST JSONP 如何使用
    VUE中 axios GET和POST 如何使用
    微信小程序封装组件,子父组件通信 详细解析
    CSS3文字超出块元素显示省略号
    微信小程序处理后端返回图片二进制流,渲染页面
    记录平台向用户发送消息功能界面(HTML+CSS)
    原生JavaScript写出日历功能 无引用Jq
    mongoTemplate Aggregation first
    封装返回前端的通用格式
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6950407.html
Copyright © 2020-2023  润新知