0

タイトルがあいまいで申し訳ありませんが、問題は複雑すぎて短いフレーズで要約できません...

次のリダイレクトルールを設定しようとしています。

  1. blog.mydomain.net/en/something:リダイレクト先www.mydomain.com/something
  2. blog.mydomain.net/fr/something:リダイレクト先www.mydomain.fr/something
  3. blog.mydomain.net/*:リダイレクト先www.mydomain.com

ルール3は機能していますが、ルール1と2はスキップされているように見えるため、ルール3が常に適用されます。これが私のweb.configルールです:

<!-- Canonicalize mydomain.com to www.mydomain.com -->
<rule name="CanonicalHostNameRule_en" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^mydomain\.com$" />
    </conditions>
    <action type="Redirect" url="http://www.mydomain.com/{R:1}" />
</rule>

<!-- Canonicalize mydomain.fr to www.mydomain.fr -->
<rule name="CanonicalHostNameRule_fr" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^mydomain\.fr$" />
    </conditions>
    <action type="Redirect" url="http://www.mydomain.fr/{R:1}" />
</rule>

<!-- Redirect blog.mydomain.net/en/something to www.mydomain.com/something -->
<rule name="RedirectBlog_en" enabled="true" stopProcessing="true">
    <match url="^/en(/.*)?$" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^blog\.mydomain\.net$" />
    </conditions>
    <action type="Redirect" url="http://www.mydomain.com/{R:1}" />
</rule>
<!-- Redirect blog.mydomain.net/fr/something to www.mydomain.fr/something -->
<rule name="RedirectBlog_fr" enabled="true" stopProcessing="true">
    <match url="^/fr(/.*)?$" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^blog\.mydomain\.net$" />
    </conditions>
    <action type="Redirect" url="http://www.mydomain.fr/{R:1}" />
</rule>

<!-- Redirect blog.mydomain.net/* to www.mydomain.com -->
<rule name="RedirectBlog_other" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^blog\.mydomain\.net$" />
    </conditions>
    <action type="Redirect" url="http://www.mydomain.com/" />
</rule>

<!-- Wordpress-specific rules -->
...

なぜルールがスキップされるRedirectBlog_enのかわかりません。RedirectBlog_fr正規表現をテストしましたが、正常に機能します。

誰かが問題を見つけることができますか?


編集:3番目のルール(RedirectBlog_other)を無効にすると、ルール1と2は正常に機能します...ルール1と2はルール3の前に実行されるので、どうすれば可能ですか?

4

1 に答える 1

1

はい、分かりました!

まず、私が思っていたように物事は起こっていませんでした。ルール3を無効にすると、ルール1と2が機能しませんでした。それでも実際のドメインにリダイレクトされましたが、これはルールではなくWordpressによって行われました。

次に、URLを照合するためのパターンが間違っていました。先頭の「/」が入力に含まれていないため、ルールがまったく照合されませんでした。

于 2012-05-16T19:49:49.673 に答える