2016-06-21 19 views
0

私は何をしたいのは、私がリンクを持っている場合です。IISのリライト:一部またはURLなどqueystringパラメータの一つでリダイレクト

http://www.test.com/photo.asp?hash=hfz6rhfgz&offset=10

はのように書き換えること:

http://www.test.com/photo/hfz6rhfgz/?offset=10

他のクエリパラメータがあり、ハッシュが最初のもの以外の場所にある可能性があります。

問題はそれですオフセット、しかしとしてULDの仕事は私のルールと二番目のパラメータである私が取得:私が必要となるよう

http://www.test.com/photo/hfz6rhfgz/&offset=10

ことはもちろん、エラーになります「?」 "&"の代わりに。リダイレクトされたURLではオフセットは第2パラメータと似ており、元のリンクでは2番目のパラメータと同じです。ここで

は私のリダイレクトルールです:

  <rule name="test-redirect" stopProcessing="true"> 
       <match url="^photo.asp$" ignoreCase="true" /> 
       <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
        <add input="{QUERY_STRING}" pattern="^(.*)hash=([\w]{8})(.*)$" /> 
       </conditions> 
       <action type="Redirect" url="/photo/{C:2}/{C:1}{C:3}" redirectType="Permanent" appendQueryString="false" /> 
      </rule> 

答えて

0

私は一種の自分で解決策を見つけるが、

http://www.test.com/photo.asp?test=10&hash=jcekg876

のようなものがある場合は、それが生成する:

http://www.test.com/photo/jcekg876/?test=10&

最後のアンプはあまりにも多く、他の状況でそれは大丈夫動作します。誰もがこの&を取り除く方法を知っているならば、私はきれいなURLがリダイレクト必要があるため、それは、いいだろう...

   <rule name="test-redirect" stopProcessing="true"> 
       <match url="^photo.asp$" ignoreCase="true" /> 
       <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
        <add input="{QUERY_STRING}" pattern="(.*)hash=([\w]{16})[&amp;]?(.*)" /> 
       </conditions> 
       <action type="Redirect" url="/photo/{C:2}/?{C:1}{C:3}" redirectType="Found" appendQueryString="false" /> 
      </rule> 
関連する問題