2016-03-30 27 views
3

yılında & için kural Yeniden Yazma?nasıl kurulum bir kural url <strong><code>&</code></strong> ile <strong><code>&amp;</code></strong> yerine edebilirsiniz url

Bu çalışır:

Request.QueryString("amp;w"); 

Ancak herhalde,: o aşağıdaki gibi berbat w parametresini erişebilir unutulmamalıdır, başlayanlar için www.../home.asp?h=1&amp;w=2

+0

Beklediğiniz şey hakkında daha fazla bilgi verebilir misiniz? Yeniden yazma işlemini hangi seviyede gerçekleştirmeyi bekliyorsunuz? Birincisi 2 url-kodlanmış parametreye (h ve w) sahipken, ikincisi tek bir parametreye sahip olacaktır (h değeri '1 & w = 2'). Her ikisi de kendi başına makul. Yani, belki biraz daha bağlam göstermek, soruyu cevaplamaya yardımcı olabilir. – rpy

+0

@rpy Birincisi gibi çalışmak için ikincisine ihtiyacım var. – Vixed

+0

Bazı harici (tarayıcılar) bu içeriyor mu yoksa yeniden yazma motoruna girdi olarak ne biliyorsunuz? Ne denedin? Açıkça tahmin ediyorum: '&' & 've' & '' '' ile? Aslo yarı belirgin & 'tarafından & amp;'? Ya da & 'gibi' '' '' ile bazı garip görünen varyantlar? (Ve yeniden yazımdan çıktı olarak ne anlıyorsunuz? – rpy

cevap

1

: www.../home.asp?h=1&w=2

Bu başarısız biraz daha elverişli bir şey istersiniz :)

aşağıdaki gibi IIS URL Rewrite modülüne erişim, (yukarıda 7 IIS ve) kullanarak, web.config bazı kurallar ekleyebilirsiniz:

<?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> 

Ne bu kurallar do onay sorgu dizesinde gelen &amp; içindir ve ile değiştirin &. Ben rastgele sayıları işlemek için genel bir kural ile gelmek mümkün olduğunu düşünmüyorum. Ancak, gereken en fazla sayıda eklemek için izlemeniz gereken 3 olaya kadar bir model oluşturdum.

kullanıcının tarayıcısını yönlendirmek isterseniz, Rewrite den Redirect her eylem type niteliğini değiştirerek bunu olabileceği unutulmamalıdır

.