2016-03-30 6 views
3

に&のルールを書き換え?どのように私はセットアップルールは、URLで<strong><code>&</code></strong>で<strong><code>&amp;</code></strong>を交換することができ、URL

これは動作します:www.../home.asp?h=1&w=2

これは失敗します。手始めにwww.../home.asp?h=1&amp;w=2

+0

ご希望のものについて詳しくご説明できますか?書き換えを実行するレベルはどれくらいですか?最初は2つのURLエンコードされたパラメータ(hとw)を持ち、2番目のパラメータは1つのパラメータ(hは値 '1&w = 2')を持ちます。どちらもそれ自体が妥当です。だから多分もっと多くの文脈を表示すると、質問に答えるのに役立つかもしれません。 – rpy

+0

@rpy最初のものと同じように動作するには2番目のものが必要です。 – Vixed

+0

これは、外部(ブラウザ)が送信したもの、または書き換えエンジンへの入力として認識したものですか?何を試しましたか?私は明らかに '&'で '&'、 '&'で '&'と推測していましたか?また、準具体的な「&」は、「& amp; '?あるいは、 '&'のようないくつかの変わった変種は、 '&'? (そして、書き換えの出力として何を認識していますか? – rpy

答えて

1

を、次のようにあなたがめちゃめちゃwパラメータにアクセスできることに留意すべきである:

Request.QueryString("amp;w"); 

しかし、私は期待もう少し雄弁なことがありますか?

次のようにIIS URL Rewriteモジュールへのアクセス、(上記7 IISと)、あなたは、web.configファイルにいくつかのルールを追加することができます。

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="One Bad Ampersand" stopProcessing="true"> 
        <match url="(.*)" /> 
        <conditions> 
         <add input="{QUERY_STRING}" pattern="^([^&amp;]+)&amp;amp;([^&amp;]+)$" /> 
        </conditions> 
        <action type="Rewrite" url="{R:1}?{C:1}&amp;{C:2}" appendQueryString="false" /> 
       </rule> 
       <rule name="Two Bad Ampersand" stopProcessing="true"> 
        <match url="(.*)" /> 
        <conditions> 
         <add input="{QUERY_STRING}" pattern="^([^&amp;]+)&amp;amp;([^&amp;]+)&amp;amp;([^&amp;]+)$" /> 
        </conditions> 
        <action type="Rewrite" url="{R:1}?{C:1}&amp;{C:2}&amp;{C:3}" appendQueryString="false" /> 
       </rule> 
       <rule name="Three Bad Ampersand" stopProcessing="true"> 
        <match url="(.*)" /> 
        <conditions> 
         <add input="{QUERY_STRING}" pattern="^([^&amp;]+)&amp;amp;([^&amp;]+)&amp;amp;([^&amp;]+)&amp;amp;([^&amp;]+)$" /> 
        </conditions> 
        <action type="Rewrite" url="{R:1}?{C:1}&amp;{C:2}&amp;{C:3}&amp;{C:4}" appendQueryString="false" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

何これらのルールはやるチェックがクエリ文字列に入ってくる&amp;のためであるとし、それを置き換えます&。私は、任意の数の出現を処理するジェネリックルールを考え出すことはできないと思います。しかし、私は必要な数を追加するために従うべき3回までのパターンを確立しました。

ユーザーのブラウザをリダイレクトする場合は、各操作のtype属性をRewriteからRedirectに変更してください。

関連する問題

 関連する問題