代码之家  ›  专栏  ›  技术社区  ›  Glen Solsberry

Apache RewriteRule与RewriteMap

  •  2
  • Glen Solsberry  · 技术社区  · 16 年前

    我有一本书 RewriteMap 看起来是这样的:

    Guide           1
    Mini-Guide      2
    White Paper     3
    

    我把它包括在 Apache

    RewriteMap legacy txt:/var/www/site/var/rewrite_map.txt
    

    我想创建一个 RewriteRule 处于这个位置;

    RewriteRule ^/section/downloads/(${legacy})/(.*)$ /blah.php?subsection=${legacy:%1}&title=$2
    

    我知道我可以用 ${legacy} 在右边,但我可以在左边使用它吗?如果可以,如何使用?

    3 回复  |  直到 16 年前
        1
  •  7
  •   matpie    16 年前

    将重写规则更改为:

    # Put these on one line
    RewriteRule ^/section/downloads/([a-zA-Z-]+)/(.*)$
                /blah.php?subsection=${legacy:$1}&title=$2
    

    第一个分组捕获传入URL中的字符串。替换中的$1将其应用于命名映射。要设置默认值,请更改 ${legacy:$1} ${legacy:$1|Unknown} .

    最后,如果您只希望规则处理映射文件中的值,请添加 RewriteCond :

    RewriteCond ${legacy:$1|Unknown} !Unknown
    # Put these on one line
    RewriteRule ^/section/downloads/([a-zA-Z-]+)/(.*)$
                /blah.php?subsection=${legacy:$1}&title=$2
    

    Unknown ),然后运行下一条规则。否则,请跳过规则并继续。

    Apache RewriteMap

        2
  •  2
  •   hqx5    13 年前

    # %1 will be the subpattern number1 afterwards
    RewriteCond %{REQUEST_URI} ^/section/downloads/(.*)
    # check if there is no mapping for %1
    RewriteCond ${legacy:%1} !^$
    # if there is rewrite it
    RewriteRule ^/(.*) /blah.php?subsection=${legacy:%1}&title=$2 [R]
    
        3
  •  1
  •   Cheeso    16 年前

    但是
    如果未找到捕获的值,则可以指定默认值。这种方式:

    ## all on one line
    RewriteRule ^/section/downloads/([a-zA-Z-]+)/(.*)$
            /blah.php?subsection=${legacy:$1|defaultValue}&title=$2
    

    将“defaultValue”替换为您喜欢的任何内容。例如,如果在映射中找不到给定的参数,则为0(零)或“notfound”。

    如果您选择使用另一个规则,则它将如下所示:

    ## all on one line
    RewriteRule ^/section/downloads/([a-zA-Z-]+)/(.*)$
            /blah.php?subsection=${legacy:$1|notFoundMarker}&title=$2
    
    ## This rule fires if the lookupKey was not found in the map in the prior rule.
    RewriteRule ^/blah.php?subsection=notFoundMarker  /404.php   [L]
    
    推荐文章