2016-09-16 21 views
0

私のweb.configにリダイレクトのルールを書きたいと思います。web.configのIIS URLリダイレクトルール

私のようなURLをリダイレクトしたい...

http://www.example.net/profile/username

に...

http://www.example.net/#/profile/username

私は、以下の実行を追加しましたが、機能していないようです。これを行う最善の方法は何ですか?

<rule name="Redirect to hashed profile" stopProcessing="true"> 
      <match url="(.*)" /> 
      <conditions> 
       <add input="{HTTP_HOST}{REQUEST_URI}" pattern="on" ignoreCase="true" pattern="^.net/profile/*"/> 
      </conditions> 
      <action type="Redirect" url="https://{HTTP_HOST}/#/{REQUEST_URI}" redirectType="Permanent" appendQueryString="true" /> 
     </rule> 

答えて

1

ここでは何が起こっているのか、どのように修正しているのですか。 www.example.comあるごHTTP_HOSTの先頭に

pattern="^.net/profile/*" 

^アンカーテキストだから^.netは、あなたのURLは任意の1つの文字.、その後、単語netで始めなければならないことを意味します。私はあなたがまた、スラッシュの終わりに\//を脱出しても*する必要が\.

としてそれを逃れるためにしたことを行うために、あなたは文字通り.に一致するように望んでいた意味と仮定するつもりですただ試合無制限スラッシュを意味するが、あなたはそれがスラッシュ無制限の時間の後に任意の文字に一致するようにしたいので、それはあなたのウェブサイトが.net

で始まらないので、だから我々は ^を使用することはできませんようのは、そのパターンを書き換えてみましょう .*

です

pattern="\.net\/profile\/.*" 
あなたにこれを与える

..

<add input="{HTTP_HOST}{REQUEST_URI}" pattern="on" ignoreCase="true" pattern="\.net\/profile\/.*"> 

しかし、あなたは本当に{HTTP_HOST}が必要なのでしょうか?これがグローバルルールであるかどうかは、グローバルルールではなく、アプリケーションレベルであるかによって大きく異なります。あなたはそれを必要としません。

に追加して、profileという単語をREQUEST_URIの最初の部分にこのように固定することができます。

<add input="{REQUEST_URI}" pattern="on" ignoreCase="true" pattern="^profile\/.*"> 
関連する問題