• apache的重写规则


    • .htaccess

        .htaccess叫分布式配置文件,.htaccess文件的作用在于当浏览器通过uri访问到服务器某个文件夹或文件时,我们可以决定这个uri是否访问uri指定资源或者拒绝访问。

    • 重写配置开启
    1. 让服务器加载rewrite.so模块
    2. 配置vhost站点时候,将此参数AllowOverride配置成all.
      AllowOverride all
      

        

    3. 在项目根目下必须有.htaccess文件
      <IfModule mod_rewrite.c>
        Options +FollowSymlinks -Multiviews
        RewriteEngine On
      
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
      </IfModule> 
      

        

    • 重写和重定向区别
      1. 重写是同域名下改写访问路径,重定向是不同域名之间
      2. 重写是服务器端改写路径,不返回到浏览器。重定向需要返回给浏览器,让浏览器访问。
      3. 重写对SEO优化没有效果,重定向有。
    • 基本语法介绍
    【说明 】定义重写发生的条件
    【语法】 RewriteCond 【TestString】 【CondPattern】 [flags]
    【作用域】 server config, virtual host, directory, .htaccess
    【覆盖项】 FileInfo
    【状态】 扩展(E)
    【模块】 mod_rewrite
    
    1. CondPattern基本是正则匹配,正则匹配时候"!"感叹号表示否定含义。
    2. 纯字母对比
    2.1>(词典顺序的小于)   ‘<CondPattern’
        将CondPattern视为纯字符串,与TestString按词典顺序进行比较。如果TestString小于CondPattern则为真。
    2.2>(词典顺序的大于)  ‘>CondPattern’
        将CondPattern视为纯字符串,与TestString按词典顺序进行比较。如果TestString大于CondPattern则为真。
    2.3>(词典顺序的等于)  ‘=CondPattern’
      将CondPattern视为纯字符串,与TestString按词典顺序进行比较。如果TestString等于CondPattern(两个字符串逐个字符地完全相等)则为真。
    2.4>(为空判断) ""
       如果CondPattern是”"(两个双引号),则TestString将与空字符串进行比较。
    

      3.目录文件的测试

    3.1> ‘-d’(目录)
        将TestString视为一个路径名并测试它是否为一个存在的目录。
    3.2> ‘-f’(常规文件)
        将TestString视为一个路径名并测试它是否为一个存在的常规文件。
    3.3> ‘-s’(非空的常规文件)
        将TestString视为一个路径名并测试它是否为一个存在的、尺寸大于0的常规文件。
    3.4> ‘-l’(符号连接)
        将TestString视为一个路径名并测试它是否为一个存在的符号连接。
    3.5> ‘-x’(可执行)
        将TestString视为一个路径名并测试它是否为一个存在的、具有可执行权限的文件。该权限由操作系统检测。
    3.6> ‘-F’(对子请求存在的文件)
        检查TestString是否为一个有效的文件,而且可以在服务器当前的访问控制配置下被访问。它使用一个内部子请求来做检查,由于会降低服务器的性能,所以请谨慎使用!
    3.7> ‘-U’(对子请求存在的URL)
        检查TestString是否为一个有效的URL,而且可以在服务器当前的访问控制配置下被访问。它使用一个内部子请求来做检查,由于会降低服务器的性能,所以请谨慎使用!
    

      

    [flags]
    语句	含义
    R	强制外部重定向;R=301 永久重定向、R=302 临时重定向
    F	禁止URL,返回403 http状态码
    G	强制URL为GONE,返回410 http状态码
    P	强制使用代理转发
    L	表明当前规则是最后一条规则,停止分析以后的规则重写
    N	重新从第一条规则开始运行重写过程
    C	与下一条规则关联
    T=MIME-type(force MIME type) 强制MIME类型
    NS	只是用于不是内部的子请求
    NC	不区分大小写
    QSA	追加请求字符串
    NE	不再输出转义特殊字符 %3d$1 等价于 =$1
    

      

    TestString是一个纯文本的字符串,但是还可以包含下列可扩展的成分:
    1、RewriteRule反向引用 ,引用方法是:$N (0 <= N <= 9)引用当前(带有若干RewriteRule指令的)RewriteCond中的与Pattern匹配的分组成分(圆括号!)。
    2、RewriteCond反向引用 ,引用方法是:%N (1 <= N <= 9)引用当前若干RewriteCond条件中最后符合的条件中的分组成分(圆括号!)。
    3、RewriteMap扩展 ,引用方法是:${mapname:key|default} 细节请参见RewriteMap 指令。
    • 环境变量

    • 暂时
    • 参考

    《.htaccess 基础教程(四)Apache RewriteCond 规则参数》 http://www.cnblogs.com/52php/p/5670199.html

  • 相关阅读:
    HDU 1982 Kaitou Kid The Phantom Thief (1)
    HDU 1984 Mispelling4
    HDU 2546 饭卡
    HDU 1009 FatMouse' Trade
    在VC 中如何隐藏一个主程序窗口
    .菜单项
    SetClassLong,GetClassLong 动态改变光标
    .窗口捕获鼠标
    .主窗口向子控件发送消息
    线段树 1698 Just a Hook 区间set更新
  • 原文地址:https://www.cnblogs.com/huhu1020387597/p/12927304.html
Copyright © 2020-2023  润新知