`
wildwind
  • 浏览: 100817 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Apache Mod_Rewrite配置

阅读更多
modrewrite配置文档学习笔记:

1.环境变量:

    例子:

    SCRIPT_NAME=/sw/lib/w3s/tree/global/u/rse/.www/index.html
    SCRIPT_FILENAME=/u/rse/.www/index.html
    SCRIPT_URL=/u/rse/
    SCRIPT_URI=http://en1.engelschall.com/u/rse/

2:RewriteBase
    描述:设定基于目录的重写规则的Base url.
    Syntax:    RewriteBase URL-path
    Context:    directory, .htaccess
    Override:    FileInfo
    Status:    Extension
    Module:    mod_rewrite
    这个一般不太需要管它.
3.RewriteCond
    用法:    RewriteCond Teststring Pattern
    这里是Teststring里用到的一些内置变量.
    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_PORT
    REMOTE_USER
    REMOTE_IDENT
    REQUEST_METHOD
    SCRIPT_FILENAME
    PATH_INFO
    QUERY_STRING
    AUTH_TYPE

    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
    HTTPS

    #你可以在规则前加"!"取反.
    #这是一些常见的特殊的规则。你可以使用他们来取代一些表达式:

    * 'CondPattern’ (lexicographically follows)
    * ‘=CondPattern’ (lexicographically equal)
    * ‘-d’ (is directory)  测试是否是目录.
    * ‘-f’ (is regular file) 测试是否是常规文件.
    * ‘-s’ (is regular file, with size)
    * ‘-l’ (is symbolic link)
    * ‘-F’ (is existing file, via subrequest)
    * ‘-U’ (is existing URL, via subrequest)

    你可以为规则后设置[flags]选项作为第三个参数.常见的有:
    You can also set special flags for CondPattern by appending [flags]  as the third argument to the RewriteCond  directive, where flags is a comma-separated list of any of the following flags:

    # ‘nocase|NC’ (no case)
    # ‘ornext|OR’ (or next condition)
    例如:
    RewriteCond %{REMOTE_HOST}  ^host1.*  [OR]
    RewriteCond %{REMOTE_HOST}  ^host2.*  [OR]
    RewriteCond %{REMOTE_HOST}  ^host3.*
    RewriteRule …some special stuff for any of these hosts…

    如下例:
    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]
    用Mozilla类的浏览器访问时会带你到homepage.max.html,这里支持所有特性。用Lynx来浏览时,带你到纯文本页(homepage.min.html),默认情况下会访问一个叫homepage.std.html的页.

4.RewriteEngine:
    使用:
    RewriteEngine On|Off
    如果存在.htaccess的文件,应当显式地指明RewriteEngine On.
    因为默认情况下.htaccess的RewriteEngine项是Off的。因此如果想用.htaccess来设置rewrite,文件头一行一般都需要RewriteEngine On

5.RewriteLock:
    供rewrite-mapping程序同步使用的锁文件。
    使用:
    RewriteLock file-path

6.RewriteLog:
    设定日志文件.如果不是以”/”开头,则是指相对ServerRoot的相对路径.
    使用:
    RewriteLog    file-path

7.RewriteLogLevel:
    设定日志记录级别。
    使用:
    RewriteLogLevel level
    默认:

8.RewriteMap:
    使用Mapping.
    它的上下文是Server config 和Virtual host
    使用:
    RewriteMap Mapname MapType:Mapsource
    例如:
    在httpd.conf中配置:
    #RewriteMap exampleMap txt:/path/to/file/map.txt
    #RewriteRule ^/ex/(.*)    ${exampleMap:$1}
    而map文件的格式有这个几个:
    1.txt类型的map文件:
        #Standard Plain     txt:
        #map.txt
        #maptype:txt
        Ralf.S.Engelschall    rse   # Bastard Operator From Hell
        Mr.Joe.Average        joe   # Mr. Average

    2.Randomized Plain Text
        #maptyp:rnd
        static    www1|www2|www3|www4
        dynamic    www5|www6

        配置:
        RewriteMap servers    rnd:/path/to/mapfile/map.txt
        RewriteRule ^/(.*.(png|gif|jpg)) http://${servers:static}/$1    [NC,P,L]
        RewriteRule ^/(.*)    http://${servers:dynamic}/$1    [P,L]

    3.dbm
        这里提供了一个txt2dmb程序。
        !/path/to/bin/perl
        ##
        ##  txt2dbm — convert txt map to dbm format
        ##

        use NDBM_File;
        use Fcntl;

        ($txtmap, $dbmmap) = @ARGV;

        open(TXT, “<$txtmap") or die "Couldn't open $txtmap!n";
        tie (%DB, 'NDBM_File', $dbmmap,O_RDWR|O_TRUNC|O_CREAT, 0644)
          or die "Couldn't create $dbmmap!n";

        while () {
          next if (/^s*#/ or /^s*$/);
          $DB{$1} = $2 if (/^s*(S+)s+(S+)/);
        }

        untie %DB;
        close(TXT);

        用法:
        $ txt2dbm map.txt map.db

    4.内置函数:
        map:int map-source:internal apache functions
        functions有:toupper,tolower,escape,unescape

    5.外部程序:
        maptyp:prg map source:外部程序的路径.
        示例:
        #!/usr/bin/perl
        $| = 1;
        while () {
            # …put here any transformations or lookups…
            print $_;
        }

9.RewriteOptions
    用法:
    RewriteOptions rewriteoptions
    default    :
    rewriteoptions    maxRedirects=10
    上下文:
    server config,virtual host,.htaccess directory
    rewriteoptions可以是下面两个值:
    inherit:从上一级配置继承.
    MaxRedirects=num(10,15,,,,,等等)

10.RewriteRule:
    这是mod_rewrite中用得最多的语句了(”the real rewriting workhorse”);
    用法:
    RewriteRule pattern Substitution [Flags]

    Quantifiers:
      ?           0 or 1 occurrences of the preceding text
      *           0 or N occurrences of the preceding text (N > 0)
      +           1 or N occurrences of the preceding text (N > 1)

    Grouping:
      (text)      Grouping of text
                  (used either to set the borders of an alternative as above, or
                  to make backreferences, where the Nth group can
                  be referred to on the RHS of a RewriteRule as $N)

    Anchors:
      ^           Start-of-line anchor
      $           End-of-line anchor

    Escaping:
      char       escape the given char
                  (for instance, to specify the chars “.[]()” etc.)

    一些技巧:
   1.  back-references ($N) to the RewriteRule pattern
   2. back-references (%N) to the last matched RewriteCond pattern
   3. server-variables as in rule condition test-strings (%{VARNAME})
   4. mapping-function calls (${mapname:key|default})

    关于Flags:
    # ‘chain|C’ (chained with next rule)
    # ‘cookie|CO=NAME:VAL:domain[:lifetime[:path]]’ (set cookie)
    # ‘env|E=VAR:VAL’ (set environment variable)
    # ‘forbidden|F’ (force URL to be forbidden)
    # ‘gone|G’ (force URL to be gone)
    # ‘last|L’ (last rule)
    # ‘next|N’ (next round)
    # ‘nocase|NC’ (no case)
    # ‘noescape|NE’ (no URI escaping of output)
    例如:
    RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE]
    这将会将’/foo/zed’ 转向到’/bar?arg=p1=zed’
    # ‘nosubreq|NS’ ( not for internal sub-requests)
    # ‘proxy|P’ (force proxy)

    Note: mod_proxy must be enabled in order to use this flag.
    # ‘passthrough|PT’ (pass through to next handler)
    (例如:
    RewriteRule ^/abc(.*) /def$1 [PT]
    Alias /def /ghi

    # ‘qsappend|QSA’ (query string append)
    # ‘redirect|R [=code]’ (force redirect)
    # ’skip|S=num’ (skip next rule(s))
    # ‘type|T=MIME-type’ (force MIME type)
分享到:
评论

相关推荐

    php检测apache mod_rewrite模块是否安装的方法

    在Web开发中,Apache HTTP Server是一个广泛使用的开源服务器,而mod_rewrite是Apache的一个核心模块,它提供了URL重写功能,允许开发者通过配置规则来改变URL的结构,这对于创建搜索引擎友好的URL、实现URL隐藏参数...

    关于Apache_mod_rewite的中文配置和RewriteRule规则详细介绍

    LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c ``` 确保这两行配置没有被注释掉(即没有被`#`号覆盖)。如果被注释,取消注释即可。 三、RewriteRule规则详解 RewriteRule是mod_...

    开启Apache mod_rewrite模块示例代码

    LoadModule rewrite_module modules/mod_rewrite.so ``` 如果这行前面有`#`,则表示模块被注释掉,需要去掉`#`以启用。这行命令指示Apache加载mod_rewrite模块。 2. **设置AllowOverride和Options**: 要在特定...

    ISAPI_Rewrite3完美破解版

    这个组件允许Web开发者通过使用类似Apache mod_rewrite的规则,来管理和控制网站的URL结构,实现动态网址到静态网址的转换,以及进行反向代理等高级功能。 ISAPI_Rewrite的核心功能在于URL重写,它能够帮助网站优化...

    linux_apache_rewrite编译配置.pdf

    修改Apache配置文件`/usr/local/apache2/conf/httpd.conf`,找到`#LoadModule rewrite_module modules/mod_rewrite.so`这一行,去掉前面的`#`,使其变为`LoadModule rewrite_module modules/mod_rewrite.so`,然后...

    apache win32 2_0_58 mod_rewrite exploit VC++代码

    本文将深入探讨Apache 2.0.58版本在`mod_rewrite`模块中存在的一个潜在的exploit(利用),并介绍如何通过VC++编写相关的利用代码。由于Apache的旧版本可能存在的安全问题,攻击者可能会发现并利用这些漏洞来执行...

    mod_rewrite - Apache HTTP服务器.pdf

    - **修正处理**:在授权程序段和读取目录级配置文件(.htaccess)之后,再次触发`mod_rewrite`进行修正处理,此时主要处理目录级别的配置。 #### 学习与应用建议 由于`mod_rewrite`的复杂性,建议初学者从简单的...

    利用内部的映射函数扩展Apache的mod_rewrite.zip

    8. 配置与调试:在Apache配置中正确指定映射函数的路径,并启用mod_rewrite模块。使用Apache的`RewriteLogLevel`和`RewriteLog`指令进行日志记录和调试。 总结,利用内部映射函数扩展Apache的mod_rewrite,可以将...

    linux_apache_rewrite编译配置整理.pdf

    LoadModule rewrite_module modules/mod_rewrite.so ``` 然后,可以在`&lt;Directory&gt;`、`&lt;Location&gt;`或`&lt;VirtualHost&gt;`区块内定义`RewriteEngine`和`RewriteRule`。 5. **URL重写规则**: `RewriteEngine On`开启...

    Apache mod_rewrite实现HTTP和HTTPS重定向跳转

    这时候你可以用以下的方式来做到:(Apache mod_rewrite) RewriteEngine On RewriteBase / RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://jb51.net/$1 [R=301,L] 把这段代码放在.htaccess文件...

    Linux下Apache安装/增加mod_rewrite模块的方法

    LoadModule rewrite_module modules/mod_rewrite.so ``` 6. 保存并关闭`httpd.conf`,然后重启Apache服务以使更改生效: ```bash systemctl restart httpd 或者 service apache2 restart ``` 完成以上步骤后...

    MOD_REWRITE

    ### MOD_REWRITE:Apache服务器的URL重写模块 在探讨`MOD_REWRITE`时,我们首先需要理解其在Web服务器管理中的核心作用。`MOD_REWRITE`是Apache服务器的一个功能强大的模块,它允许服务器管理员对URL进行重写,从而...

    测试重写模块是否开启 How To Test Check If Mod_rewrite Is Enabled

    LoadModule rewrite_module modules/mod_rewrite.so ``` 2. **使用PHP函数**: 你可以创建一个名为`rewrite.php`的PHP脚本来检测。以下是检测代码: ```php phpinfo(); ``` 运行此脚本,如果`mod_rewrite`...

    Apress.The.Definitive.Guide.to.Apache.mod.rewrite.Feb.2006.pdf

    本书详细阐述了 mod_rewrite 的工作原理,包括其语法、指令集以及如何在 Apache 配置文件(如 httpd.conf 或 .htaccess 文件)中正确配置这些规则。 ### 二、URL 重写规则详解 mod_rewrite 的核心是其规则设置,...

    64位 wi8 iis7 isapi_rewrite 伪静态配置软件亲测可用

    ISAPI_Rewrite是Helicon Tech公司开发的一款用于IIS的URL重写工具,类似于Apache的mod_rewrite模块。它允许开发者通过简单的规则对URL进行重写,实现动态URL到静态URL的转换,有助于提高网站的SEO优化和用户体验。...

    Unix/Linux上面mod_rewrite模块的使用

    在配置mod_rewrite模块时,管理员通常需要修改Apache的配置文件httpd.conf,或者在网站的根目录下创建或修改.htaccess文件(前提是Apache服务器的配置允许使用.htaccess文件,并已启用mod_rewrite)。规则文件中,每...

    Mod_Rewrite_Automation:使用C2服务器前的mod_rewrite自动执行apache2站起来的脚本

    Apache Mod_Rewrite Terrafrom自动化 Bash脚本从用户那里获取变量,然后调用terraform脚本以在C2服务器之前使用mod_rewrite自动启动apache2。 现在,此仓库支持在Linode或Digital Ocean中站起来的重定向器,并且我有...

Global site tag (gtag.js) - Google Analytics