2013-09-25 229 views
1

我知道這可能是一個簡單的問題,但我想從我的URL重寫規則中排除一個文件。下面是我的web.config文件的重寫部分(代碼由其他人提供)。我想排除一個名爲demo-download.php的文件,使它的擴展名被刪除。 (這是導致問題,我有一些PHP代碼使用$ _POST)。URL Rewrite排除特定網址

<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> 

回答

0

你可以嘗試加入這一行:

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