重写URL导致具有相同名称的打开文件夹

时间:2015-08-24 10:33:57

标签: asp.net url-rewriting web-config

我有以下规则从网址末尾删除.aspx

<rewrite>
    <rules>
        <clear />
        <rule name="Redirect to clean URL" enabled="true" stopProcessing="true">
            <match url="^([a-z0-9/]+).aspx$" ignoreCase="true" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
            <action type="Redirect" url="{R:1}" />
        </rule>
        <rule name="RewriteASPX" enabled="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            </conditions>
            <action type="Rewrite" url="{R:1}.aspx" />
        </rule>
    </rules>
</rewrite>

现在的问题是,该路径中可用的文件夹名称相同的几个特定页面每次都会被打开而不是该网站。

这是我的网站

enter image description here

假设当我点击链接City.aspx时,它会打开名称为城市的文件夹(在FTP中),而不是打开该页面。

[编辑]

删除<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />解决了问题,但现在在网址中输入网站名称无效。

1 个答案:

答案 0 :(得分:0)

通过删除此问题解决了问题:

<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />

并添加此内容:

<rule name="Canonical" stopProcessing="true">
   <match url=".*"/>
      <conditions>
         <add input="{HTTP_HOST}" pattern="^([a-z]+[.]com)$"/>
      </conditions>
         <action type="Rewrite" url="http://www.{C:0}/{R:0}/Index.aspx" redirectType="Permanent"/>
</rule>