精华内容
下载资源
问答
  • Referer与防盗链

    2017-07-14 11:36:25
    Referer:HTTP请求头信息中的Referer可以判断访问的本站...如Apache可以编写.htaccess文件来重写访问的资源连接RewriteEngine On #Rewrite Base /dir #只在dir目录下生效 RewriteCond %{REQUEST_FILENAME} .*\.(jpg|j

    Referer:HTTP请求头信息中的Referer可以判断访问的本站资源是来自哪里的。因此,我们可以利用Referer来避免别人盗取自己本站的资源,如图片。

    如Apache可以编写.htaccess文件来重写访问的资源连接

    RewriteEngine On
    #Rewrite Base /dir #只在dir目录下生效
    RewriteCond %{REQUEST_FILENAME} .*\.(jpg|jpeg|gif|png) [NC]#重写请求图片文件
    RewriteCond %{HTTP_REFERER} !localhost [NC] #对HTTP_REFERER不是来自localhost的图片文件则进行重写
    RewriteRule .*  no.png #重写为no.png图片

    既然是通过referer来判断,那么我们可以进行反防盗链措施。
    在HTTP请求时伪造Referer信息

    <?php  
    require('./http.class.php');
    $http = new Http('http://localhost/dog.jpg');//请求该URL的图片资源
    $http->setHeader('Connection','close');
    $http->setHeader('Referer','http://localhost');//伪造Referer
    $res = $http->get();//进行GET请求
    file_put_contents('./get.png',substr(strstr($res,"\r\n\r\n"),4));
    //将获取的资源写到get.png文件中
    ?>  

    上述require的http.class.php源码:http://blog.csdn.net/whd526/article/details/75070920

    展开全文
  • 重写规则

    2010-07-13 16:10:00
    开启 LoadModule rewrite_module modules/mod_... RewriteEngine on  RewriteCond %{HTTP_REFERER} !^http://www.url.com/ [NC]  RewriteRule ^/([a-z])/([a-z])/([a-z0-9])$ /$1.ph

    开启

    LoadModule rewrite_module     modules/mod_rewrite.so

     

    <IfModule mod_rewrite.c>
        RewriteEngine on

        RewriteCond %{HTTP_REFERER} !^http://www.url.com/ [NC]
        RewriteRule ^/([a-z])/([a-z])/([a-z0-9])$  /$1.php?mode=$2$aion=$3
    </IfModule>

    展开全文
  • Apache重写规则参数

    2017-09-13 10:11:02
    Apache模块 mod_rewrite 服务器变量: 引用方法是 %{ NAME_OF_VARIABLE } NAME_OF_VARIABLE可以是下表列出的字符串之一: ...HTTP_REFERER HTTP_COOKIE HTTP_FORWARDED HTTP_HOST HTTP_PRO
    Apache模块 mod_rewrite
    服务器变量: 引用方法是 
    %{ NAME_OF_VARIABLE } 
    NAME_OF_VARIABLE可以是下表列出的字符串之一: HTTP headers: connection & request:  
    HTTP_USER_AGENT
    HTTP_REFERER
    HTTP_COOKIE
    HTTP_FORWARDED
    HTTP_HOST
    HTTP_PROXY_CONNECTION
    HTTP_ACCEPT
    REMOTE_ADDR
    REMOTE_HOST
    REMOTE_USER
    REMOTE_IDENT
    REQUEST_METHOD
    SCRIPT_FILENAME
    PATH_INFO
    QUERY_STRING
    AUTH_TYPE
    
    server internals: system stuff: specials: 
    DOCUMENT_ROOT
    SERVER_ADMIN
    SERVER_NAME
    SERVER_ADDR
    SERVER_PORT
    SERVER_PROTOCOL
    SERVER_SOFTWARE
    TIME_YEAR
    TIME_MON
    TIME_DAY
    TIME_HOUR
    TIME_MIN
    TIME_SEC
    TIME_WDAY
    TIME
    API_VERSION
    THE_REQUEST
    REQUEST_URI
    REQUEST_FILENAME
    IS_SUBREQ
    谨记: CondPattern是一个兼容perl的正则表达式, 但是还有若干增补:
    可以在pattern串中使用’!’ 字符(惊叹号)来实现匹配的反转。 
    CondPatterns有若干特殊的变种。除了正则表达式的标准用法,还有下列用法: 
    ’;CondPattern’ (词典顺序的大于)
    将CondPattern视为纯字符串,与TestString以词典顺序相比较. 如果按词典顺序,TestString大于CondPattern,则为真. 
    ’=CondPattern’ (词典顺序的等于)
    将CondPattern视为纯字符串,与TestString以词典顺序相比较. 如果按词典顺序,TestString等于CondPattern,则为真,即, 两个字符串(逐个字符地)完全相等。如果CondPattern只是\"\"(两个引号), 则TestString将与空串相比较. 
    ’-d’ (是一个目录[directory])
         将TestString视为一个路径名并测试它是否存在而且是一个目录. 
    ’-f’ (是一个常规的文件[file])
         将TestString视为一个路径名并测试它是否存在而且是一个常规的文件. 
    ’-s’ (是一个非空的常规文件[size])
         将TestString视为一个路径名并测试它是否存在而且是一个尺寸大于0的常规的文件. 
    ’-l’ (是一个符号连接[link])
         将TestString视为一个路径名并测试它是否存在而且是一个符号连接. 
    ’-F’ (对子请求有效的业已存在的文件)
         测试TestString是否一个有效的文件, 而且可以被服务器当前已经配置的所有存取控制所存取。 它用一个内部子请求来做判断,由于会降低服务器的性能,请小心使用! 
    ’-U’ (对子请求有效的业已存在的URL)
         测试TestString是否一个有效的URL, 而且可以被服务器当前已经配置的所有存取控制所存取。 它用一个内部子请求来做判断,由于会降低服务器的性能,请小心使用! 
    注意
    所有这些测试都可以用惊叹号作前缀(’!’)以实现条件的反转. 
    另外,还可以为CondPattern追加特殊的标记
    [flags] 
    作为RewriteCond指令的第三个参数。 Flags是一个以逗号分隔的以下标记的列表:
    ’nocase|NC’ (no case)
          它使测试忽略大小写, 即, 扩展后的TestString和CondPattern中, ’A-Z’ 和’a-z’是没有区别的。此标记仅作用于TestString和CondPattern的比较, 而对文件系统和子请求的测试不起作用。 
    ’ornext|OR’ (or next condition)
          它以OR方式组合若干规则的条件,而不是隐含的AND。典型的例子如下: 
    RewriteCond %{REMOTE_HOST}  ^host1.*  [OR]
    RewriteCond %{REMOTE_HOST}  ^host2.*  [OR]
    RewriteCond %{REMOTE_HOST}  ^host3.*
    RewriteRule ...some special stuff for any of these hosts...
    举例:
    如果要按请求头中的``User-Agent:’重写一个站点的主页,可以这样写:
    RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*
    RewriteRule  ^/$                 /homepage.max.html  [L]
    RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
    RewriteRule  ^/$                 /homepage.min.html  [L]
    RewriteRule  ^/$                 /homepage.std.html  [L]
    
    RewriteEngine 指令
          RewriteEngine off    使用该指令可以使mod_rewrite模块无效
    RewriteLog 指令
          RewriteLog \"/usr/local/var/apache/logs/rewrite.log\" 
          或者 RewriteLog logs/rewrite.log
    RewriteLogLevel 指令 
          RewriteLogLevel 0     关闭所有的重写操作记录。
          使用较高的Level值会使Apache服务器速度急剧下降! 
          重写日志使用大于2的Level值只用于调试! 
          举例:     RewriteLogLevel 3
    RewriteRule 指令
    Text:
       .           Any single character
       [chars]     Character class: One  of chars
       [^chars]    Character class: None of chars
       text1|text2 Alternative: text1 or text2
    Quantifiers:
       ?           0 or 1 of the preceding text
       *           0 or N of the preceding text (N >; 0)
       +           1 or N of the preceding text (N >; 1)
    Grouping:
       (text)      Grouping of text
                   (either to set the borders of an alternative or
                   for making backreferences where the Nth group can 
                   be used on the RHS of a RewriteRule with $N)
    Anchors:
       ^           Start of line anchor
       $           End   of line anchor
    Escaping:
       \char       escape that particular char
                   (for instance to specify the chars \".[]()\" etc.)
    在mod_rewrite中,还可以使用否字符(’!’)的pattern前缀,以实现pattern的反转。 
    $N 反向引用RewriteRule的pattern 
    %N 反向引用最后匹配的RewriteCond pattern 
    规则条件测试字符串中(%{VARNAME})的服务器变量 
    映射函数调用(${mapname:key|default}) 
    [flags] 
    作为RewriteRule指令的第三个参数。 Flags是一个包含以逗号分隔的下列标记的列表: 
    [R]  (强制重定向 redirect)
    [F]  (强制URL为被禁止的 forbidden)
         立即反馈一个HTTP响应代码403(被禁止的)。 
    [G]  (强制URL为已废弃的 gone)
         立即反馈一个HTTP响应代码410(已废弃的) 
    [P]  (强制为代理 proxy)
         并立即把处理移交给代理模块。
    [L]  (最后一个规则 last)
         立即停止重写操作,并不再应用其他重写规则。 
    [N]  (重新执行 next round)
         重新执行重写操作(从第一个规则重新开始). 
    [C]  (与下一个规则相链接 chained)
         此标记使当前规则与下一个(其本身又可以与其后继规则相链接的, 并可以如此反复的)规则相链接。 它产生这样一个效果: 如果一个规则被匹配,通常会继续处理其后继规则, 即,这个标记不起作用;如果规则不能被匹配, 则其后继的链接的规则会被忽略。比如,在执行一个外部重定向时, 对一个目录级规则集,你可能需要删除``.www’’ (此处不应该出现``.www’’的)。 
    []’type|T=MIME-type’ (强制MIME类型 type)
        强制目标文件的MIME类型为MIME-type。 比如,它可以用于模拟mod_alias中的ScriptAlias指令, 以内部地强制被映射目录中的所有文件的MIME类型为``application/x-httpd-cgi’’. 
    [NS] (仅用于不对内部子请求进行处理 no internal sub-request)
         在当前请求是一个内部子请求时,此标记强制重写引擎跳过该重写规则。
    [NC] (忽略大小写 no case)
         它使Pattern忽略大小写. 
    [QSA] (追加请求串 query string append)
         此标记强制重写引擎在已有的替换串中追加一个请求串,而不是简单的替换。 
    [NE] (在输出中不对URI作转义 no URI escaping)
         此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。
         例:RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] 
            可以使’/foo/zed’转向到一个安全的请求’/bar?arg=P1=zed’. 
    [PT] (移交给下一个处理器 pass through)
         此标记强制重写引擎将内部结构request_rec中的uri字段设置为 filename字段的值,它只是一个小修改,使之能对来自其他URI到文件名翻译器的 Alias,ScriptAlias, Redirect 等指令的输出进行后续处理。举一个能说明其含义的例子: 如果要通过mod_rewrite的重写引擎重写/abc为/def, 然后通过mod_alias使/def转变为/ghi,可以这样: 
    RewriteRule ^/abc(.*) /def$1 [PT]
    Alias /def /ghi 
    如果省略了PT标记,虽然mod_rewrite运作正常, 即, 作为一个使用API的URI到文件名翻译器, 它可以重写uri=/abc/...为filename=/def/..., 但是,后续的mod_alias在试图作URI到文件名的翻译时,则会失效。
    注意: 如果需要混合使用不同的包含URI到文件名翻译器的模块时, 就必须使用这个标记。。 混合使用mod_alias和mod_rewrite就是个典型的例子。
    ’skip|S=num’ (跳过后继的规则 skip)
    此标记强制重写引擎跳过当前匹配规则后继的num个规则。 它可以实现一个伪if-then-else的构造: 最后一个规则是then从句,而被跳过的skip=N个规则是else从句. (它和’chain|C’标记是不同的!) 
    ’env|E=VAR:VAL’ (设置环境变量 environment variable)
    此标记使环境变量VAR的值为VAL, VAL可以包含可扩展的反向引用的正则表达式$N和%N。 此标记可以多次使用以设置多个变量。 这些变量可以在其后许多情况下被间接引用,但通常是在XSSI (via ;) or CGI (如 $ENV{’VAR’})中, 也可以在后继的RewriteCond指令的pattern中通过%{ENV:VAR}作引用。 使用它可以从URL中剥离并记住一些信息。 
    ’cookie|CO=NAME:VAL:domain[:lifetime[]]’ (设置cookie)
    它在客户端浏览器上设置一个cookie。 cookie的名称是NAME,其值是VAL。 domain字段是该cookie的域,比如’.apache.org’, 可选的lifetime是cookie生命期的分钟数, 可选的path是cookie的路径。 
    注意
    绝不要忘记,在服务器级配置文件中,Pattern是作用于整个URL的。 但是在目录级配置文件中, (一般总是和特定目录名称相同的)目录前缀会在pattern匹配时被自动删除, 而又在替换完毕后自动被加上。此特性对很多种重写是必须的,因为, 如果没有这个剥离前缀的动作,就必须与其父目录去匹配,而这并不总是可行的。 
    但是有一个例外: 如果替换串以``http://’’开头, 则不会附加目录前缀, 而是强制产生一个外部重定向,或者(如果使用了P标记)是一个代理操作!
    注意
    为了对目录级配置启用重写引擎,你必须在这些文件中设置``RewriteEngine On’’, 并且打开``Options FollowSymLinks’。 如果管理员对用户目录禁用了FollowSymLinks, 则无法使用重写引擎。这个限制是为了安全而设置的。 
    以下是所有可能的替换组合及其含义:
    在服务器级配置中(httpd.conf)
    ,对这样一个请求 ``GET /somepath/pathinfo’’:
    Given Rule                                      Resulting Substitution
    ----------------------------------------------  ----------------------------------
    ^/somepath(.*) otherpath$1                      not supported, because invalid!
    ^/somepath(.*) otherpath$1  [R]                 not supported, because invalid!
    ^/somepath(.*) otherpath$1  [P]                 not supported, because invalid!
    ----------------------------------------------  ----------------------------------
    ^/somepath(.*) /otherpath$1                     /otherpath/pathinfo
    ^/somepath(.*) /otherpath$1 [R]                 http://thishost/otherpath/pathinfo
                                                     via external redirection
    ^/somepath(.*) /otherpath$1 [P]                 not supported, because silly!
    ----------------------------------------------  ----------------------------------
    ^/somepath(.*) http://thishost/otherpath$1      /otherpath/pathinfo
    ^/somepath(.*) http://thishost/otherpath$1 [R]  http://thishost/otherpath/pathinfo
                                                     via external redirection
    ^/somepath(.*) http://thishost/otherpath$1 [P]  not supported, because silly!
    ----------------------------------------------  ----------------------------------
    ^/somepath(.*) http://otherhost/otherpath$1     http://otherhost/otherpath/pathinfo
                                                     via external redirection
    ^/somepath(.*) http://otherhost/otherpath$1 [R] http://otherhost/otherpath/pathinfo
                                                     via external redirection
                                                     (the [R] flag is redundant)
    ^/somepath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo
                                                     via internal proxy
    在/somepath的目录级配置中
    (即, 目录/physical/path/to/somepath的.htaccess文件中包含 RewriteBase /somepath)
    对这样一个请求``GET /somepath/localpath/pathinfo’’:
    Given Rule                                      Resulting Substitution
    ----------------------------------------------  ----------------------------------
    ^localpath(.*) otherpath$1                      /somepath/otherpath/pathinfo
    ^localpath(.*) otherpath$1  [R]                 http://thishost/somepath/otherpath/pathinfo
                                                     via external redirection
    ^localpath(.*) otherpath$1  [P]                 not supported, because silly!
    ----------------------------------------------  ----------------------------------
    ^localpath(.*) /otherpath$1                     /otherpath/pathinfo
    ^localpath(.*) /otherpath$1 [R]                 http://thishost/otherpath/pathinfo
                                                     via external redirection
    ^localpath(.*) /otherpath$1 [P]                 not supported, because silly!
    ----------------------------------------------  ----------------------------------
    ^localpath(.*) http://thishost/otherpath$1      /otherpath/pathinfo
    ^localpath(.*) http://thishost/otherpath$1 [R]  http://thishost/otherpath/pathinfo
                                                     via external redirection
    ^localpath(.*) http://thishost/otherpath$1 [P]  not supported, because silly!
    ----------------------------------------------  ----------------------------------
    ^localpath(.*) http://otherhost/otherpath$1     http://otherhost/otherpath/pathinfo
                                                     via external redirection
    ^localpath(.*) http://otherhost/otherpath$1 [R] http://otherhost/otherpath/pathinfo
                                                     via external redirection
                                                     (the [R] flag is redundant)
    ^localpath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo
                                                     via internal proxy
    举例:
    要重写这种形式的URL
    / Language /~ Realname /.../ File 
    为
    /u/ Username /.../ File . Language 
    可以把这样的对应关系保存在/path/to/file/map.txt映射文件中, 此后,只要在Apache服务器配置文件中增加下列行,即可:
    RewriteLog   /path/to/file/rewrite.log
    RewriteMap   real-to-user               txt:/path/to/file/map.txt
    RewriteRule  ^/([^/]+)/~([^/]+)/(.*)$   /u/${real-to-user:$2|nobody}/$3.$1
    分类: linux
    展开全文
  • nginx重写规则codeigniter

    2015-01-06 20:01:13
    '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_time...
  • RewriteCond %{HTTP_REFERER} !^https://(.+\.)?nazwadomeny.pl/ [NC] RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !google\. [NC] RewriteCond %{HTTP_REFERER} !yahoo\. [NC] # Prevent ...
  • 重写引用。 它是由新的API启用的引用程序重写工具。 v3.4 2012-08-07 对应于清单版本2。操作没有变化。 v3.3 2012-07-06 当需要输出一个新的UA作为http://hoge.jp/kage~与来自url等的匹配类型 修正了hoge.jp/kage〜...
  • RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.*$ [NC] RewriteRule \.(gif|jpg|png)$ http://www.domain.com [L] RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=...
  • 一、常用设置 1、日志格式 log_format main '$time_iso8601|$remote_addr|$remote_user|$request_method|$uri|' '$status|$request_time|$request_length|$... '$upstream_response_time|$args|$http_referer|$http
  • Apache模块 mod_rewrite 服务器变量: 引用方法是 %{ NAME_OF_VARIABLE } NAME_OF_VARIABLE可以是下表列出的字符串之一: ... request: HTTP_USER_AGENTHTTP_REFERERHTTP_COOKIEHTTP_FORWARDEDHTTP_HOSTHTTP_PRO...
    Apache模块 mod_rewrite
    服务器变量: 引用方法是
    %{ NAME_OF_VARIABLE }
    NAME_OF_VARIABLE可以是下表列出的字符串之一: HTTP headers: connection & request: 
    HTTP_USER_AGENT
    HTTP_REFERER
    HTTP_COOKIE
    HTTP_FORWARDED
    HTTP_HOST
    HTTP_PROXY_CONNECTION
    HTTP_ACCEPT
    REMOTE_ADDR
    REMOTE_HOST
    REMOTE_USER
    REMOTE_IDENT
    REQUEST_METHOD
    SCRIPT_FILENAME
    PATH_INFO
    QUERY_STRING
    AUTH_TYPE
     
    server internals: system stuff: specials:
    DOCUMENT_ROOT
    SERVER_ADMIN
    SERVER_NAME
    SERVER_ADDR
    SERVER_PORT
    SERVER_PROTOCOL
    SERVER_SOFTWARE
    TIME_YEAR
    TIME_MON
    TIME_DAY
    TIME_HOUR
    TIME_MIN
    TIME_SEC
    TIME_WDAY
    TIME
    API_VERSION
    THE_REQUEST
    REQUEST_URI
    REQUEST_FILENAME
    IS_SUBREQ
    谨记: CondPattern是一个兼容perl的正则表达式, 但是还有若干增补:
    可以在pattern串中使用’!’ 字符(惊叹号)来实现匹配的反转。
    CondPatterns有若干特殊的变种。除了正则表达式的标准用法,还有下列用法:
    ’;CondPattern’ (词典顺序的大于)
    将CondPattern视为纯字符串,与TestString以词典顺序相比较. 如果按词典顺序,TestString大于CondPattern,则为真.
    ’=CondPattern’ (词典顺序的等于)
    将CondPattern视为纯字符串,与TestString以词典顺序相比较. 如果按词典顺序,TestString等于CondPattern,则为真,即, 两个字符串(逐个字符地)完全相等。如果CondPattern只是\"\"(两个引号), 则TestString将与空串相比较.
    ’-d’ (是一个目录[directory])
         将TestString视为一个路径名并测试它是否存在而且是一个目录.
    ’-f’ (是一个常规的文件[file])
         将TestString视为一个路径名并测试它是否存在而且是一个常规的文件.
    ’-s’ (是一个非空的常规文件[size])
         将TestString视为一个路径名并测试它是否存在而且是一个尺寸大于0的常规的文件.
    ’-l’ (是一个符号连接[link])
         将TestString视为一个路径名并测试它是否存在而且是一个符号连接.
    ’-F’ (对子请求有效的业已存在的文件)
         测试TestString是否一个有效的文件, 而且可以被服务器当前已经配置的所有存取控制所存取。 它用一个内部子请求来做判断,由于会降低服务器的性能,请小心使用!
    ’-U’ (对子请求有效的业已存在的URL)
         测试TestString是否一个有效的URL, 而且可以被服务器当前已经配置的所有存取控制所存取。 它用一个内部子请求来做判断,由于会降低服务器的性能,请小心使用!
    注意
    所有这些测试都可以用惊叹号作前缀(’!’)以实现条件的反转.
    另外,还可以为CondPattern追加特殊的标记
    [flags]
    作为RewriteCond指令的第三个参数。 Flags是一个以逗号分隔的以下标记的列表:
    ’nocase|NC’ (no case)
          它使测试忽略大小写, 即, 扩展后的TestString和CondPattern中, ’A-Z’ 和’a-z’是没有区别的。此标记仅作用于TestString和CondPattern的比较, 而对文件系统和子请求的测试不起作用。
    ’ornext|OR’ (or next condition)
          它以OR方式组合若干规则的条件,而不是隐含的AND。典型的例子如下:
    RewriteCond %{REMOTE_HOST}  ^host1.*  [OR]
    RewriteCond %{REMOTE_HOST}  ^host2.*  [OR]
    RewriteCond %{REMOTE_HOST}  ^host3.*
    RewriteRule ...some special stuff for any of these hosts...
    举例:
    如果要按请求头中的``User-Agent:’重写一个站点的主页,可以这样写:
    RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*
    RewriteRule  ^/$                 /homepage.max.html  [L]
    RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
    RewriteRule  ^/$                 /homepage.min.html  [L]
    RewriteRule  ^/$                 /homepage.std.html  [L]

    RewriteEngine 指令
          RewriteEngine off    使用该指令可以使mod_rewrite模块无效
    RewriteLog 指令
          RewriteLog \"/usr/local/var/apache/logs/rewrite.log\"
          或者 RewriteLog logs/rewrite.log
    RewriteLogLevel 指令
          RewriteLogLevel 0     关闭所有的重写操作记录。
          使用较高的Level值会使Apache服务器速度急剧下降!
          重写日志使用大于2的Level值只用于调试!
          举例:     RewriteLogLevel 3
    RewriteRule 指令
    Text:
       .           Any single character
       [chars]     Character class: One  of chars
       [^chars]    Character class: None of chars
       text1|text2 Alternative: text1 or text2
    Quantifiers:
       ?           0 or 1 of the preceding text
       *           0 or N of the preceding text (N >; 0)
       +           1 or N of the preceding text (N >; 1)
    Grouping:
       (text)      Grouping of text
                   (either to set the borders of an alternative or
                   for making backreferences where the Nth group can
                   be used on the RHS of a RewriteRule with $N)
    Anchors:
       ^           Start of line anchor
       $           End   of line anchor
    Escaping:
       \char       escape that particular char
                   (for instance to specify the chars \".[]()\" etc.)
    在mod_rewrite中,还可以使用否字符(’!’)的pattern前缀,以实现pattern的反转。
    $N 反向引用RewriteRule的pattern
    %N 反向引用最后匹配的RewriteCond pattern
    规则条件测试字符串中(%{VARNAME})的服务器变量
    映射函数调用(${mapname:key|default})
    [flags]
    作为RewriteRule指令的第三个参数。 Flags是一个包含以逗号分隔的下列标记的列表:
    [R]  (强制重定向 redirect)
    [F]  (强制URL为被禁止的 forbidden)
         立即反馈一个HTTP响应代码403(被禁止的)。
    [G]  (强制URL为已废弃的 gone)
         立即反馈一个HTTP响应代码410(已废弃的)
    [P]  (强制为代理 proxy)
         并立即把处理移交给代理模块。
    [L]  (最后一个规则 last)
         立即停止重写操作,并不再应用其他重写规则。
    [N]  (重新执行 next round)
         重新执行重写操作(从第一个规则重新开始).
    [C]  (与下一个规则相链接 chained)
         此标记使当前规则与下一个(其本身又可以与其后继规则相链接的, 并可以如此反复的)规则相链接。 它产生这样一个效果: 如果一个规则被匹配,通常会继续处理其后继规则, 即,这个标记不起作用;如果规则不能被匹配, 则其后继的链接的规则会被忽略。比如,在执行一个外部重定向时, 对一个目录级规则集,你可能需要删除``.www’’ (此处不应该出现``.www’’的)。
    []’type|T=MIME-type’ (强制MIME类型 type)
        强制目标文件的MIME类型为MIME-type。 比如,它可以用于模拟mod_alias中的ScriptAlias指令, 以内部地强制被映射目录中的所有文件的MIME类型为``application/x-httpd-cgi’’.
    [NS] (仅用于不对内部子请求进行处理 no internal sub-request)
         在当前请求是一个内部子请求时,此标记强制重写引擎跳过该重写规则。
    [NC] (忽略大小写 no case)
         它使Pattern忽略大小写.
    [QSA] (追加请求串 query string append)
         此标记强制重写引擎在已有的替换串中追加一个请求串,而不是简单的替换。
    [NE] (在输出中不对URI作转义 no URI escaping)
         此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。
         例:RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]
            可以使’/foo/zed’转向到一个安全的请求’/bar?arg=P1=zed’.
    [PT] (移交给下一个处理器 pass through)
         此标记强制重写引擎将内部结构request_rec中的uri字段设置为 filename字段的值,它只是一个小修改,使之能对来自其他URI到文件名翻译器的 Alias,ScriptAlias, Redirect 等指令的输出进行后续处理。举一个能说明其含义的例子: 如果要通过mod_rewrite的重写引擎重写/abc为/def, 然后通过mod_alias使/def转变为/ghi,可以这样:
    RewriteRule ^/abc(.*) /def$1 [PT]
    Alias /def /ghi
    如果省略了PT标记,虽然mod_rewrite运作正常, 即, 作为一个使用API的URI到文件名翻译器, 它可以重写uri=/abc/...为filename=/def/..., 但是,后续的mod_alias在试图作URI到文件名的翻译时,则会失效。
    注意: 如果需要混合使用不同的包含URI到文件名翻译器的模块时, 就必须使用这个标记。。 混合使用mod_alias和mod_rewrite就是个典型的例子。
    ’skip|S=num’ (跳过后继的规则 skip)
    此标记强制重写引擎跳过当前匹配规则后继的num个规则。 它可以实现一个伪if-then-else的构造: 最后一个规则是then从句,而被跳过的skip=N个规则是else从句. (它和’chain|C’标记是不同的!)
    ’env|E=VAR:VAL’ (设置环境变量 environment variable)
    此标记使环境变量VAR的值为VAL, VAL可以包含可扩展的反向引用的正则表达式$N和%N。 此标记可以多次使用以设置多个变量。 这些变量可以在其后许多情况下被间接引用,但通常是在XSSI (via ;) or CGI (如 $ENV{’VAR’})中, 也可以在后继的RewriteCond指令的pattern中通过%{ENV:VAR}作引用。 使用它可以从URL中剥离并记住一些信息。
    ’cookie|CO=NAME:VAL:domain[:lifetime[]]’ (设置cookie)
    它在客户端浏览器上设置一个cookie。 cookie的名称是NAME,其值是VAL。 domain字段是该cookie的域,比如’.apache.org’, 可选的lifetime是cookie生命期的分钟数, 可选的path是cookie的路径。
    注意
    绝不要忘记,在服务器级配置文件中,Pattern是作用于整个URL的。 但是在目录级配置文件中, (一般总是和特定目录名称相同的)目录前缀会在pattern匹配时被自动删除, 而又在替换完毕后自动被加上。此特性对很多种重写是必须的,因为, 如果没有这个剥离前缀的动作,就必须与其父目录去匹配,而这并不总是可行的。
    但是有一个例外: 如果替换串以``http://’’开头, 则不会附加目录前缀, 而是强制产生一个外部重定向,或者(如果使用了P标记)是一个代理操作!
    注意
    为了对目录级配置启用重写引擎,你必须在这些文件中设置``RewriteEngine On’’, 并且打开``Options FollowSymLinks’。 如果管理员对用户目录禁用了FollowSymLinks, 则无法使用重写引擎。这个限制是为了安全而设置的。
    以下是所有可能的替换组合及其含义:
    在服务器级配置中(httpd.conf)
    ,对这样一个请求 ``GET /somepath/pathinfo’’:
    Given Rule                                      Resulting Substitution
    ----------------------------------------------  ----------------------------------
    ^/somepath(.*) otherpath$1                      not supported, because invalid!
    ^/somepath(.*) otherpath$1  [R]                 not supported, because invalid!
    ^/somepath(.*) otherpath$1  [P]                 not supported, because invalid!
    ----------------------------------------------  ----------------------------------
    ^/somepath(.*) /otherpath$1                     /otherpath/pathinfo
    ^/somepath(.*) /otherpath$1 [R]                 http://thishost/otherpath/pathinfo
                                                     via external redirection
    ^/somepath(.*) /otherpath$1 [P]                 not supported, because silly!
    ----------------------------------------------  ----------------------------------
    ^/somepath(.*) http://thishost/otherpath$1      /otherpath/pathinfo
    ^/somepath(.*) http://thishost/otherpath$1 [R]  http://thishost/otherpath/pathinfo
                                                     via external redirection
    ^/somepath(.*) http://thishost/otherpath$1 [P]  not supported, because silly!
    ----------------------------------------------  ----------------------------------
    ^/somepath(.*) http://otherhost/otherpath$1     http://otherhost/otherpath/pathinfo
                                                     via external redirection
    ^/somepath(.*) http://otherhost/otherpath$1 [R] http://otherhost/otherpath/pathinfo
                                                     via external redirection
                                                     (the [R] flag is redundant)
    ^/somepath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo
                                                     via internal proxy
    在/somepath的目录级配置中
    (即, 目录/physical/path/to/somepath的.htaccess文件中包含 RewriteBase /somepath)
    对这样一个请求``GET /somepath/localpath/pathinfo’’:
    Given Rule                                      Resulting Substitution
    ----------------------------------------------  ----------------------------------
    ^localpath(.*) otherpath$1                      /somepath/otherpath/pathinfo
    ^localpath(.*) otherpath$1  [R]                 http://thishost/somepath/otherpath/pathinfo
                                                     via external redirection
    ^localpath(.*) otherpath$1  [P]                 not supported, because silly!
    ----------------------------------------------  ----------------------------------
    ^localpath(.*) /otherpath$1                     /otherpath/pathinfo
    ^localpath(.*) /otherpath$1 [R]                 http://thishost/otherpath/pathinfo
                                                     via external redirection
    ^localpath(.*) /otherpath$1 [P]                 not supported, because silly!
    ----------------------------------------------  ----------------------------------
    ^localpath(.*) http://thishost/otherpath$1      /otherpath/pathinfo
    ^localpath(.*) http://thishost/otherpath$1 [R]  http://thishost/otherpath/pathinfo
                                                     via external redirection
    ^localpath(.*) http://thishost/otherpath$1 [P]  not supported, because silly!
    ----------------------------------------------  ----------------------------------
    ^localpath(.*) http://otherhost/otherpath$1     http://otherhost/otherpath/pathinfo
                                                     via external redirection
    ^localpath(.*) http://otherhost/otherpath$1 [R] http://otherhost/otherpath/pathinfo
                                                     via external redirection
                                                     (the [R] flag is redundant)
    ^localpath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo
                                                     via internal proxy
    举例:
    要重写这种形式的URL
    / Language /~ Realname /.../ File

    /u/ Username /.../ File . Language
    可以把这样的对应关系保存在/path/to/file/map.txt映射文件中, 此后,只要在Apache服务器配置文件中增加下列行,即可:
    RewriteLog   /path/to/file/rewrite.log
    RewriteMap   real-to-user               txt:/path/to/file/map.txt
    RewriteRule  ^/([^/]+)/~([^/]+)/(.*)$   /u/${real-to-user:$2|nobody}/$3.$1

    转载于:https://www.cnblogs.com/lost-1987/articles/2636563.html

    展开全文
  • RewriteCond %{HTTP_REFERER} !^http://www.example.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.example.com$ [NC] RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ - [F,NC] # Start CloudFlare:example....
  • 图片防盗链模块详解图片防盗链不需要程序配合,根据图片来源来实现,但是只能先限制基本的图片盗用,无法防止图片采集.1.referer模块简介nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求.我们应该牢记...
  • Apache模块 mod_rewrite 服务器变量: 引用方法是  %{ NAME_OF_VARIABLE }  NAME_OF_VARIABLE可以是下表列出的字符串之一: ... ...HTTP_REFERER HTTP_COOKIE HTTP_FORWARDED HTTP_HO
  • 接上一篇文章。 以下所有实例,都是在本地测试,访问ip为 127.0.0.2。...RewriteCond %{HTTP_REFERER} !^$ #RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?你的域名.com [NC] RewriteCond %{HTT
  • <p>I would change my URL article <p><code> www.mynews.fr/news/politic/the-new-gouverner-china</code></p>... <p>To ...<p>I would referer my articles in Google Actuality. Thank for your feedback. </div>
  • <p>File does not exist: /var/www/html/automation/contact, referer: <code>http://example.com:3333/automation</code></p> <p>I really suck at regex and htaccess I would really appreciate some help. ...
  • RewriteCond %{HTTP_REFERER} !^http://(www\.)?foo.com [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?foo.com.*$ [NC] RewriteRule .*\.(gif|jpg)$ - [F] </code></pre> <p><strong>BUT, when this ....
  • Referer: http://stage.domain.edu/contact Accept-Language: en-US User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E) ...
  • #开启重写引擎 RewriteEngine on #配置重写规则 RewriteRule index.html index.php/Welcome/news_list [L] #防盗链 RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^...
  • #开启重写引擎 RewriteEngine on #配置重写规则 RewriteRule index.html index.php/Welcome/news_list [L] #防盗链 RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^...
  • 伪静态配置

    2016-09-18 15:27:33
    #开启重写引擎 RewriteEngine on #写重写规则 RewriteRule (\d+).html php7/lianxi5/a.php?page=$1 [L,NC] #配置防盗链 #条件 RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !...
  • 背景 前端xcode升级后,tableau报表打不开 。 原因 前端cookie丢失 referer导致【不传refer正常】 根本原因 ...spring gateway 网关重写response返回location 相关知识 http spring servlet ...
  • 如何设置伪静态

    2016-09-26 08:19:03
    .#开启重写引擎 RewriteEngine on RewriteRule (\d+)_(.*)?.html  seo/list.php?page=$1&sou=$2 [L,NC] #防盗链 RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !http://www.qi.com.* [N
  • 通过URL Rewrite设置Referer进行防止跨站请求伪造漏洞 URL Rewrite简述 URL Rewrite是微软针对IIS推出的一种对URL进行重写的扩展模块,目前支持用于IIS7及以上版本。该模块使IIS管理员能够创建强大的自定义规则,...
  • HTTP防盗链与反防盗链

    2017-03-12 16:59:00
    防盗链无非就是别人来请求自己网站的信息,用于其他网站,那么如果我们能识别请求是来自那个网站,如果是外网,那么就重定向等其他处理。... 加载重写模块 apache配置文件中去掉重写模块前 # 在需要防盗...
  • (目前仅支持HTTP_HOST REMOTE_ADDR HTTP_REFERER 三个服务器变量)  ifurl 如果匹配请求的URL则执行wrurl重写命令,否则执行下条exitr之后的规则。  wrurl 执行URL重写  exitr 结束url重写,不再往下执行。 注...
  • Apache

    2016-04-20 10:49:59
    Introduce ...Apache配置防盗链module_write //打开重写模块RewriteEngine on //编辑.htaccess文件 RewriteCond %{REQUEST_FILENAME} .*\.(jpg|jpeg|png|gif) [NC] RewriteCond %{HTTP_REFERER} !loc
  • (目前仅支持HTTP_HOST REMOTE_ADDR HTTP_REFERER三个服务器变量) ifurl 如果匹配请求的URL则执行wrurl重写命令,否则执行下条exitr之后的规则。 wrurl 执行URL重写 exitr 结束url重写,不再往下执行。
  • 目录 CSRF攻击 * 概述 * 关键点 * 目标 实战:CSRF 场景复现 * 正常的业务 *CSRF 攻击 如何触发 * 场景建模 * POST 方式 实战:与XSS 的结合添加后台... @ URL重写 ... @ 验证Referer 字段 @ 添加Token ...
  • 谈一谈网站防盗链

    2016-12-02 14:11:00
    #开启重写引擎RewriteEngineon#图片防盗链RewriteCond%{HTTP_REFERER}!http://rewrite/.*RewriteRule.*\.(jpg|jpeg|png|gif)daotu.jpg 引子:明明引用了一个正确的图片地址,但显示出来...

空空如也

空空如也

1 2 3
收藏数 50
精华内容 20
关键字:

重写referer