【问题标题】:How to translate this .htaccess line to web.config for IIS?如何将此 .htaccess 行转换为 IIS 的 web.config?
【发布时间】:2022-01-22 05:46:38
【问题描述】:

这是我确认有效的 .htaccess 规则:

RewriteRule ^([A-Za-z0-9-]+)/foo/products products.aspx?product_id=${product_map:$1} [NC, L]

它的作用是使用product_map.txt 文件在product_id(查询字符串)和产品名称之间进行映射。例如,假设工具 ID 为 1。以下 2 将等效/重写:

site.com/tools/foo/products
site.com/products.aspx?product_id=1

当使用 IIS 的规则导入时,变成如下:

<rule name="Imported Rule 1" stopProcessing="true">
    <match url="^([A-Za-z0-9-]+)/foo/products" ignoreCase="true" />
    <action type="Rewrite" url="products.aspx?product_id={product_map:{R:1}}" appendQueryString="false" />
</rule>

但是它说的是表达式products.aspx?product_id={product_map:{R:1}} is not valid,有没有办法让它在 IIS 中工作?

【问题讨论】:

    标签: .htaccess iis url-rewriting web-config


    【解决方案1】:

    您需要在 IIS 中使用重写映射。它的工作与product_map.txt相同,将产品名称映射到产品id。

     <rewrite>
            <rewriteMaps>
                <rewriteMap name="product_map">
                    <add key="tools" value="1" />
                </rewriteMap>
            </rewriteMaps>
            <rules>
                <rule name="rule">
                    <match url="^([A-Za-z0-9-]+)/foo/products" />
                    <conditions>
                        <add input="{product_map:{R:1}}" pattern="(.+)" />
                    </conditions>
                    <action type="Rewrite" url="products.aspx?product_id={C:0}" />
                </rule>
            </rules>
        </rewrite>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-14
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多