【问题标题】:IIS Rewrite Rule to get last part of dash delimited filenameIIS 重写规则以获取破折号分隔文件名的最后一部分
【发布时间】:2018-06-07 13:01:54
【问题描述】:

我正在使用 IIS 8.5 和重写模块,并试图提出一个规则来实现以下目标

实际网址 http://www.mywebsite.com/detail/name-of-my-product-3500.php

我想为上面的例子创建规则的重写将实现以下 http://www.mywebsite.com/detail/?id=3500

我也很乐意让任何有 .htaccess 经验的人分享一个等效示例,因为我可以将其转换为 IIS。

所以本质上我的 web.config 规则需要完成两件事 1.只适用于/detail目录 2.需要拉取文件名的最后一部分(总是数字)

followign 是我想出的,但这会导致网站上所有其他 url 出现问题,除了 /detail 目录中的这个。

<rule name="Redirect to detail" stopProcessing="true">
                <match url="([^-]+)\/?$" ignoreCase="false" />
                <action type="Rewrite" url="/detail/?npid={R:1}" appendQueryString="false" logRewrittenUrl="true" />
            </rule>

【问题讨论】:

    标签: mod-rewrite iis url-rewrite-module


    【解决方案1】:

    你的规则应该是这样的:

    <rule name="Redirect to detail" stopProcessing="true">
        <match url="^detail/.*-(\d+).php$" ignoreCase="false" />
        <action type="Rewrite" url="/detail/?npid={R:1}" appendQueryString="false"/>
    </rule>
    

    正则表达式 ^detail/.*-(\d+).php$ 将匹配所有类似 http://www.mywebsite.com/detail/name-of-my-product-XXXXXXXX.php 的 URL 并将它们重写为 /detail/?npid=XXXXXXXX

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多