2017-06-02 8 views
0

ドメインを指定しないで、アクセスしたページとリダイレクトするページだけを書き換えルールを設定できるかどうかは疑問です。私の目標は、異なるサイト(つまり、dev.mysite.com、qa.mysite.comなど)に同じバージョンの異なるバージョンを用意する必要がないため、複数のサブドメインに対して1つのルールが機能するようにすることです。たとえば、dev.mysite.com/mexicoに行く人をmx.dev.mysite.com/es/mexicoにリダイレクトする必要がありますが、それはQAでも有効です。さらに、生産にはわずかに異なるドメインがあり、これをさらに難しくします。これは私が思いついたことです - それは間違いなく仕事が必要です:異なるドメインとサブドメインで動作する書き換えルール

<rule name="Test Mexico Redirect"> 
    <match url="^mexico"/> 
    <action type="Redirect" url="http://mx.{R:2}/es/mexico" redirectType="Permanent"/> 
</rule> 

残念ながら、それはちょうどうまくいきません。私は空白のページを取得します。おそらく{R:2}がルール内のドメインを探していて、1つが指定されていないためです。ドメインをすべての環境で同じにすることはできないため、これを行う方法は考えられません。

<action>要素でregexを使用することができれば、私はこのようなことをするでしょう:^(mx\.).*com/es/mexico

答えて

0

{HTTP_HOST}と、{C:#}のような後方参照を使用することは可能です。これを設定するには、IISリライトモジュールが非常に便利です。 {HTTP_HOST}を使用することにより

enter image description here

と私はすべての環境に適用することができます書き換えルールを作ることができた条件:ここではどのように行うの説明いくつかのメモとスクリーンショットです。実際のXML結果:

<rule name="Mexico Redirect" stopProcessing="true"> 
    <match url="mexico" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="^((?!mx))" /> 
     <add input="{CACHE_URL}" pattern="^(.+)://" /> 
    </conditions> 
    <action type="Redirect" url="{C:1}://mx.{HTTP_HOST}/es/search" redirectType="Temporary" /> 
    </rule> 

はまた、私はあなたがリダイレクト(307)一時的にアプリケーションプールをリサイクルする必要はありませんと言って間違っている可能性があります。私はまだそれをリサイクルする必要があったが、生産でのみ...これについての評決はまだない。

関連する問題