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

両方のルールを変更する必要があります。
次のようになります。

<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拡張子を持つ場合にのみ適用されます。2 番目のものは、要求されたパスが正確でない場合にのみ適用されます。demo-download.php

于 2013-09-25T19:21:33.747 に答える