我正在使用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>
你的规则应该是这样的:
<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$
将匹配所有类似http://www.mywebsite.com/detail/name-of-my-product-XXXXXXXX.php
的URL并将其重写为/detail/?npid=XXXXXXXX