2016-02-06 5 views
3

У меня есть некоторые устаревшие URL-адреса, которые мне нужно перенаправить, которые имеют тильду (~) как часть URL-адреса. У меня возникли проблемы с тем, чтобы правила IIS Rewrite работали.Ошибка повторной записи URL-адреса IIS с Tilde (~)

OLD URL: http://www.example.com/~/media/something/whatever.pdf

нужно его перенаправить: /все

У меня есть следующие правила в месте:

Web.Config

<rewrite> 
    <rewriteMaps configSource="RewriteMaps.config" /> 
    <rules configSource="RewriteRules.config" /> 
</rewrite> 

RewriteMaps.config

<rewriteMaps> 
    <rewriteMap name="Legacy URLS"> 
     <!--DOES NOT WORK--> 
     <add key="~/media/something/whatever.pdf" value="/whatever" /> 
     <!--WORKS--> 
     <add key="/testing123" value="/whatever" /> 
    </rewriteMap> 
</rewriteMaps> 

RewriteRules.config

<rules> 
    <rule name="Redirect rule1 for Legacy URLS" stopProcessing="true"> 
     <match url=".*" /> 
     <conditions> 
      <add input="{Legacy URLS:{REQUEST_URI}}" pattern="(.+)" /> 
     </conditions> 
     <action type="Redirect" url="{C:1}" appendQueryString="false" /> 
    </rule> 
</rules> 
+1

Является ли тильда '' 'действительно частью URL (например, у вас на самом деле есть папка'/~ 'на вашем сервере) или используется в контексте ASP.Net (приложение) (для ссылки на« root приложения ») ? – EdSF

+0

К сожалению, по причинам, не зависящим от нас, это часть URL-адреса. –

ответ

0

Я думаю, вы должны нуждаться, чтобы избежать тильда, возможно, HTML Encode: &#126;

(http://www.ascii.cl/htmlcodes.htm) или URL Enc ода.

В противном случае это должно быть интерпретация ~ по-другому, а-ля приложения домой.