【问题标题】:How do you use rewritecond with a lookup in a map你如何使用 rewritecond 在地图中查找
【发布时间】:2011-12-29 18:32:40
【问题描述】:

我有一张地图,用于在我的 asp.net MVC 应用程序中重写 url。我希望这条规则以地图中是否存在查找值为条件。

RewriteMap contentmap txt:content/maps/contentmap.txt [NC]
RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L]

这需要 url home/some-content-id 并将其重写为 home/someaction/some-content-id

我遇到的问题是有时模式home/some-other-content-id 可能在内容映射中不匹配。没关系,但该规则仍会尝试(或看似如此)重写,如果不这样做会更好。

我最初的想法是在规则上方放置一个 rewritecond,但是您如何进行查找?

【问题讨论】:

    标签: asp.net-mvc mod-rewrite url-rewriting isapi-rewrite


    【解决方案1】:

    你试过了吗:

    RewriteMap contentmap txt:content/maps/contentmap.txt [NC]
    RewriteCond ${contentmap:$1}  >""  [NC]
    RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L]
    

    表示如果${contentmap:$1} 的结果大于空字符串 (""),则继续执行该规则。

    【讨论】:

    • 谢谢,这很好,让我对 iis6 无扩展 url 处理中令人讨厌的 eurl.axd 垃圾有了一个想法。
    【解决方案2】:

    请尝试以下语法:

    RewriteMap contentmap txt:content/maps/contentmap.txt [NC]
    RewriteCond ${contentmap:$1|NOT_FOUND} !NOT_FOUND
    RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L]
    

    【讨论】:

      猜你喜欢
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 2023-03-31
      • 2013-08-03
      • 1970-01-01
      • 2012-01-26
      • 2016-03-07
      相关资源
      最近更新 更多