URL重写排除特定URL

时间:2013-09-25 15:43:23

标签: php url web-config

我知道这可能是一个简单的问题,但我想从我的网址重写规则中排除一个文件。下面是我的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>

2 个答案:

答案 0 :(得分:0)

您可以尝试添加此行:

<add input="{REQUEST_FILENAME}" pattern=".*demo\-download\.php" negate="false" />

答案 1 :(得分: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

时,第二个才适用