1

我知道这可能是一个简单的问题,但我想从我的 URL 重写规则中排除一个文件。下面是我的 web.config 文件的重写部分(代码由其他人提供)。我想将一个名为 demo-download.php 的文件排除在其扩展名之外。(这导致我使用 $_POST 的一些 php 代码出现问题)。

<rewrite>
  <rules>
    <rule name="extensionless" stopProcessing="true">
      <match url="(.*)\.php$" />
      <action type="Redirect" url="{R:1}" redirectType="Permanent" />
    </rule>
    <rule name="removeextension" enabled="true">
      <match url=".*" negate="false" />
        <conditions>
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          <add input="{URL}" pattern="(.*)\.(.*)" negate="true" />
        </conditions>
        <action type="Rewrite" url="{R:0}.php" />
    </rule>
  </rules>
</rewrite>
4

2 回答 2

0

您可以尝试添加此行:

<add input="{REQUEST_FILENAME}" pattern=".*demo\-download\.php" negate="false" />
于 2013-09-25T19:16:16.347 回答
0

您将不得不更改这两个规则。
它会如下:

<rewrite>
  <rules>
    <rule name="extensionless" stopProcessing="true">
      <match url="^demo-download" negate="true" />
        <conditions logicalGrouping="MatchAny">
          <add input="{REQUEST_FILENAME}" pattern="\.php$" />
        </conditions>
      <action type="Redirect" url="{R:1}" redirectType="Permanent" />
    </rule>
    <rule name="removeextension" enabled="true">
      <match url="^demo-download.php$" negate="true" />
        <conditions>
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          <add input="{URL}" pattern="(.*)\.(.*)" negate="true" />
        </conditions>
        <action type="Rewrite" url="{R:0}.php" />
    </rule>
  </rules>
</rewrite>

第一条规则仅适用于请求的文件名不以开头demo-download并具有.php扩展名的情况。仅当请求的路径不完全正确时,第二个才适用demo-download.php

于 2013-09-25T19:21:33.747 回答