首页 > 解决方案 > IIS 7 URL 重写规则帮助

问题描述

我想采取以下网址

http://MYSERVER/API_Tasks/V1/controller/task.php?taskid=2

并将其重写为: http://MYSERVER/API_Tasks/V1/tasks/2

我创建了以下规则,但它似乎不起作用

<rewrite>
  <rules>
    <rule name="Imported Rule 1" stopProcessing="true">
      <match url="^tasks/([0-9]+)$" ignoreCase="false" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
      </conditions>
      <action type="Rewrite" url="controller/task.php?taskid={R:1}" appendQueryString="false" />
    </rule>
  </rules>
</rewrite>

原始 Apache .htaccess 规则

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^tasks/([0-9]+)$ controller/task.php?taskid=$1 [L]

标签: url-rewritingiis-7

解决方案


该问题实际上是由 IIS 中的规则放置在 API_Tasks 目录而不是 API_Tasks/V1 目录引起的。将 URL 规则添加到 V1 解决了该问题。


推荐阅读