zoukankan      html  css  js  c++  java
  • Apache之.htaccess备忘录(二)

    博主热衷各种互联网技术,常啰嗦,时常伴有强迫症,常更新,觉得文章对你有帮助的可以关注我。 转载请注明"深蓝的镰刀"


     书接上回,《Apache之.htaccess备忘录(一)》

    4.配置.htaccess 阻止/允许特定的IP地址

    1 deny from 000.000.000.000 
    2 deny from 000.000.000. 
    3 allow from 000.000.000.000 
    4 deny from all

    5.更改默认访问文件

    DirectoryIndex filename.html index.cgi index.pl default.htm

    6.重定向目录或文件

    Redirect OldDirectory NewDirectory Redirect OldFile NewFile

    注意:目录重定向后目录后的url会追加到新的目录后

    7.图片防盗链

    1 <IfModule mod_rewrite.c> 
    2 RewriteEngine On 
    3 RewriteBase / 
    4 RewriteCond %{HTTP_REFERER} !^$ 
    5 RewriteCond %{HTTP_REFERER} !^http://(www.)?example.com/ [NC] RewriteRule .(gif|jpg|png)$ http://www.example.com/替代图片文件名 [R,L] </IfModule>

    8.URL重写

    1 <IfModule mod_rewrite.c>
    2 RewriteEngine On 
    3 RewriteBase / 
    4 RewriteCond %{HTTP_REFERER} !^$ 
    5 RewriteCond %{HTTP_REFERER} !^http://(www.)?example.com/ [NC] RewriteRule .(gif|jpg|png)$ http://www.example.com/替代图片文件名 [R,L] </IfModule>

    第一行 确定你开启了rewrite模块,如果没有,请参考Apache之.htaccess备忘录(一)

    第二行 开启Rewite引擎

    第三行 确保重写后的基地址是你写.htaccess文件的位置、

    第四行 重写规则,并且使用R参数保证跳转是显示的

    保存在你网站根目录,然后试试输入 http://www.yourweb.com/123

    999.附录:各种语法详细解释

    1)RewriteCond指令格式

    * 用途:Rewrite规则启动的一些前提条件

    * 语法: RewriteCond TestString CondPattern [flags]

    * TestString表示待检查的变量,支持:

    $N 其中(0 <= N <= 9) 。$N引用紧跟在RewriteCond后面的RewriteRule中模板中的括号中的模板在当前URL中匹配的数据。非常常用,具体用法在RewriteRule中会介绍。

    %N 其中(0 <= N <= 9) 。%N引用最后一个RewriteCond的模板中的括号中的模板在当前URL中匹配的数据。

    以及各种变量,如%{HTTP_REFERER} ,%{REQUEST_FILENAME},%{REQUEST_URI},%{DOCUMENT_ROOT}%{REQUEST_FILENAME}

    * CondPattern表示匹配规则,Perl风格的正则表达式,同时支持以下特殊用法:

    '>CondPattern’ (大于) 将condPattern当作一个普通字符串,将它和TestString进行比较,当TestString 的字符大于CondPattern为真。    

    ‘=CondPattern’ (等于) 将condPattern当作一个普通字符串,将它和TestString进行比较,当TestString 与CondPattern完全相同时为真.如果CondPattern只是 “” (两个引号紧挨在 一起) 此时需TestString 为空字符串方为真。   

    ‘-d’ (是否为目录) 将testString当作一个目录名,检查它是否存在以及是否是一个目录。   

    ‘-f’ (是否是regular file) 将testString当作一个文件名,检查它是否存在以及是否是一个regular文件。   

    ‘-s’ (是否为长度不为0的regular文件) 将testString当作一个文件名,检查它是否存在以及是否是一个长度大于0的regular文件。   

    ‘-l’ (是否为symbolic link) 将testString当作一个文件名,检查它是否存在以及是否是一个 symbolic link。    

    ‘-F’ (通过subrequest来检查某文件是否可访问) 检查TestString是否是一个合法的文件,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。   

    ‘-U’ (通过subrequest来检查某个URL是否存在) 检查TestString是否是一个合法的URL,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。

    * flags是一些参数:

    [OR] 强制加下一个条件和条件组成“或”的关系

    [NC](no case)表示忽略大小写

    2)RewriteRule指令格式

    * 用途: 实际执行的Rewrite规则

    * 语法: RewriteRule Pattern Substitution [flags]

    * Pattern表示待搜索的规则,Perl风格的正则表达式

    * Substitution表示匹配Pattern后URL改写的值

    其中该字符串支持一个非常常用的用法:$N 其中(0 <= N <= 9) 。就是类似$1,$2的用法,该用法可以直接引用Pattern中括号中匹配的值

    如:

    RewriteRule ^/([w]+)/([0-9]+)$ -$1-$2.html 就可以将“/web/1313”改写成"-web-1313.html"


    * flags是一些参数:

    [L](last):终止一系列的RewriteCond和RewriteRule

    [R](redirect):触发一个显示的跳转,也可以指定跳转类型,如[R=301],这个参数经常会用到,比如你希望在重定向的时候URL也变化,那么就加上这个参数

    [F](forbidden):禁止查看特定文件,apache会触发403错误

    [G](gone)强制URL为已废弃的 gone

    [P](proxy)强制为代理 proxy

    [N](next)重新执行 next round

    [C](chain)与下一个规则相链接 chained

    [T=MIME-type](type)强制MIME类型 type

    [NS](nosubreq)仅用于不对内部子请求进行处理 no internal sub-request

    [NC](no case)表示忽略大小写

    [QSA](qsappend) 追加请求串 query string append

    [NE] (noescape)在输出中不对URI作转义 no URI escaping

    [PT] (passthrough)移交给下一个处理器 pass through

        


        


  • 相关阅读:
    新手讲排序:希尔排序
    安装部署VMware vSphere 5.5文档 (6-6) 集群和vMotion
    安装部署VMware vSphere 5.5文档 (6-5) 安装配置vCenter
    同步VDP时间
    vdp配置
    python定义常量
    OpenStack Keystone V3 简介
    nginx + uswgi +django
    安装系统
    Standard NSD file
  • 原文地址:https://www.cnblogs.com/hornedreaper1988/p/4269380.html
Copyright © 2011-2022 走看看