2011-07-20 17 views
2

poo.example.compoo.example.com/home.ashxにリダイレクトしたいのですが、次のコードで失敗しています。リダイレクトのホームページ

<rewrite> 
    <rules> 
    <rule name="Redirect to HTTPS" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{HTTPS}" pattern="^OFF$" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" /> 
    </rule> 
    <rule name="Redirect poo.example.com to poo.example.com/home.ashx" patternSyntax="ECMAScript" stopProcessing="true"> 
     <match url="(./)" /> 
     <action type="Redirect" url="https://{HTTP_HOST}/home.ashx" /> 
    </rule> 
    </rules> 
</rewrite> 

私はIIS 7.5を使用しています。

NOTE

私は疲れて既定のドキュメントを使用したが、それは動作しませんでした。私のアプリはasp.net mvcアプリです。それはそれに関連するかもしれませんが、これはここで問題ではありません。 IIS URL書き換え機能で実装する必要があります。

+0

おそらく[this](http://stackoverflow.com/questions/278668/is-it-possible-to-make-an-asp-net-mvc-route-based-on-a-subdomain)は役に立ちますか? –

答えて

2

これは書き直します:

<rule name="home.ashx" stopProcessing="true"> 
    <match url="^$" /> 
    <action type="Rewrite" url="/home.ashx" /> 
</rule> 

これは(301恒久的リダイレクト)をリダイレクトします:

<rule name="home.ashx" stopProcessing="true"> 
    <match url="^$" /> 
    <action type="Redirect" url="/home.ashx" /> 
</rule> 

ドメイン名がソースで同じであるため、ターゲットURL(poo.example.com)にルールを指定する必要はありません - IISは現在のドメインを自動的に設定します。

+0

ありがとうございました。完全に良い – tugberk

4

IISのデフォルトドキュメントとしてhome.ashxを追加するだけで(リストの一番上に表示されていることを確認してください)、URLを書き換える必要はありません。 (URLはブラウザに変更されないままになる際に内部リダイレクト)を

+0

それを試して、動作しませんでした。私のアプリはasp.netのmvcアプリですが、私はそれのためにデフォルトのドキュメントが動作しなかったと思います。 – tugberk

+0

'/ home.ashx'を直接リクエストすると動作しますか?リクエストがあなたのルートの1つによってピックアップされているかどうか確認し、そうであれば、他のルートをマップする前に '.ashx'ファイルへのリクエストを無視してみてください:' IgnoreRoute( "{handler} .ashx?{* path}" ); ' – wsanville

+0

うん、それは動作します。あなたは私の質問をしなかった。マッチノード内のホストURLを取得するための正規表現コードが必要 – tugberk