我正在使用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.需要提取文件名的最后一部分(始终为数字)
以下是我提出的方法,但这会导致网站上的每个其他网址出现问题,除非在/ 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>
答案 0 :(得分:0)
你的规则应该是这样的:
<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
之类的所有网址匹配,并将其重写为/detail/?npid=XXXXXXXX