3

web.config に次の書き換えルールがあります。標準ルールは機能しますが、小文字のルールは機能しません。

www.mysite.com/UPPERCASE のようにテストしようとしています。URL が www.mysite.com/uppercase に変換されることを期待していましたが、大文字のままです。私は何を間違っていますか?

<rewrite xdt:Transform="Insert">
  <rules>
    <rule name="LowerCaseRule" patternSyntax="ExactMatch">
      <match url="[A-Z]" ignoreCase="false"/>
      <action type="Redirect" url="{ToLower:{URL}}"/>
    </rule>
    <rule name="CanonicalHostName">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" pattern="^www.mysite.com$" negate="true" />
      </conditions>
      <action type="Redirect" url="{MapSSL:{HTTPS}}www.mysite.com/{R:1}" redirectType="Permanent" />
    </rule>
  </rules>
  <rewriteMaps>
    <rewriteMap name="MapSSL" defaultValue="OFF">
      <add key="ON" value="https://" />
      <add key="OFF" value="http://" />
    </rewriteMap>
  </rewriteMaps>
</rewrite>
4

3 に答える 3

4

あなたの場合、正規表現システムを使用したいのでpatternSyntax="ExactMatch"、ルールから削除する必要があります(デフォルトまたは設定によって提供されます)。LowerCaseRulepatternSyntax="ECMAScript"

したがって、ルールは次のようになります。

<rule name="LowerCaseRule">
  <match url="[A-Z]" ignoreCase="false"/>
  <action type="Redirect" url="{ToLower:{URL}}"/>
</rule>
于 2013-09-12T20:37:19.483 に答える
0

これを試して

<rule name="LowerCaseRule" stopProcessing="true">
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{URL}" pattern=".*[A-Z].*" ignoreCase="false" />
        </conditions>
        <action type="Redirect" url="{ToLower:{URL}}" />
    </rule>
于 2014-01-31T12:52:39.650 に答える