Apache和Nginx 重写服务器规则

RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,
这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。
(一) 重写规则的定义和语法
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
# [L]意味着立即停 止重写操作  .* 是指匹配所有URL中不包含换行字符 R[=code](force redirect) 强制外部重定向
    RewriteRule ^(.*)/$ /$1 [L,R=301]

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

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
#    RewriteRule ^ index.php  [L]

#   RewriteRule  ^(.*)$ test.php
#    如果上面的条件成立的话, index.php 就变成"" 空,也就是说把index.php 隐藏掉,哈哈
#    RewriteRule (.*)$ test.php     //  如果以上的结果成立,链接直接跳转到test.php


#    RewriteCond %{REQUEST_FILENAME} !-f   //如果文件存在,就直接访问文件,不进行下面的RewriteRule.(不是文件或文件不存在就执行重写)
#    RewriteCond %{REQUEST_FILENAME} !-d   //#如果目录存在就直接访问目录不进行RewriteRule
#    RewriteCond %{REQUEST_URI} !^.*(.css|.js|.gif|.png|.jpg|.jpeg)$ //#如果是这些后缀的文件,就直接访问文件,不进行Rewrite

</IfModule>

(二)重写规则的应用
#ci 框架隐藏index.php 方式
#RewriteEngine on
#RewriteCond $1 !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ /index.php/$1 [L]
#   ^(.*)$ 表示匹配任意的字符串 或网址
#  RewriteRule  ^(.*)$ index.php/$1   注意 ^(.*)$  -> index.php/$1  意思为 任意网址重新route到 index.php开头的,$i的意思表示 ^(.*)
# http://www.baidu.com/1/2/3  --->改成文档路由   http://www.baidu.com/index.php/1/2/3
#应用替换时,前面第一个()中匹配的内容后面就用$1引用,第二个()中匹配的就用$2应用…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值