2011-04-01 6 views
1

Я пытаюсь перенаправить запросы с строкой запроса на другое доменное имя.Переменная перенаправления условного запроса

У меня короткий URL-адрес, http://short.url и я хочу перенаправить http://short.url?hello в http://long.url/?hello. Таким образом, строка запроса должна сохраняться при переадресации. Чтобы усложнить ситуацию, я хотел бы переделать http://short.url?hello,hello2 на номер http://long.url/advanced.aspx/?hello,hello2.

Вот правило у меня сейчас (дело только с первой частью моего вопроса)

<rewrite> 
    <rules> 
     <rule name="test" patternSyntax="ECMAScript" stopProcessing="true"> 
      <match url="~/?\w+" /> 
      <action type="Redirect" url="http://long.url/?{R:0}" redirectType="Found" /> 
     </rule> 
    </rules> 
</rewrite> 

Однако, я не вижу никаких переадресаций. Кроме того, есть ли лучший способ сделать это? В основном я просто хочу настроить ярлык для передачи запросов на веб-сайт. Они не должны быть постоянными, поэтому я использую redirectType="Found".

+0

FWIW, вы могли бы написать HttpHandler и манипулировать URL-адреса непосредственно с C# код, чтобы делать то, что вы хотите (или даже использовать Global.asax напрямую) –

ответ

1

В случае, если кто ищет, чтобы сделать это:

<rules> 
    <rule name="Basic" patternSyntax="ECMAScript" stopProcessing="true"> 
     <match url="\w*" /> 
     <action type="Redirect" url="http://longurl.com" redirectType="Found" /> 
     <conditions> 
      <add input="{QUERY_STRING}" pattern="\w+" /> 
      <add input="{QUERY_STRING}" pattern="\," negate="true" /> 
     </conditions> 
    </rule> 
    <rule name="Advanced" patternSyntax="ECMAScript" stopProcessing="true"> 
     <match url="\w*" /> 
     <action type="Redirect" url="http://longurl.com/advanced.aspx" redirectType="Found" /> 
     <conditions> 
      <add input="{QUERY_STRING}" pattern="^\w+(?=\,)" /> 
     </conditions> 
    </rule> 
</rules> 
Смежные вопросы