繁体   English   中英

IIS重写规则以获取破折号分隔文件名的最后一部分

[英]IIS Rewrite Rule to get last part of dash delimited filename

我正在使用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目录中的URL之外。

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

您的规则应如下所示:

<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>

Regexp ^detail/.*-(\\d+).php$将与所有URL匹配,例如http://www.mywebsite.com/detail/name-of-my-product-XXXXXXXX.php ,并将它们重写为/detail/?npid=XXXXXXXX

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM