2013-05-08 3 views
0

Я делаю это в первый раз, чтобы помочь. Как сделать код с url rewrite 2.0, чтобы переписать ссылку на запрос.Url переписать базу по запросу IIS asp.net

мне нужно:

www.Example/Ekonomija/Ekonomija.aspx?Ekonomija=something 

быть

www.Example/Ekonomija/something 

и

www.Example/Test2/Test2.aspx?Test2=something 

быть

www.Example/Test2/something 

и

www.Example/Test3/Test3.aspx?Test3=something 

быть

www.Example/Test3/something 

и так далее ....

Необходимость решения с URL Rewrite: 2,0

EDITED Я стараюсь .. .. но у меня проблема, первая роль работает хорошо, а вторая нет, возможно, строка запроса не n ot точно сделано, не знаю.

<rule name="RedirectUserFriendlyURL1" stopProcessing="true"> 
       <match url="^Ekonomija/Ekonomija\.aspx$" /> 
       <conditions> 
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" /> 
        <add input="{QUERY_STRING}" pattern="^([^=&amp;]+)=([^=&amp;]+)$" /> 
       </conditions> 
       <action type="Redirect" url="{C:1}/{C:2}" appendQueryString="false" /> 
      </rule> 
      <rule name="RewriteUserFriendlyURL1" stopProcessing="true"> 
       <match url="^([^/]+)/([^/]+)/?$" /> 
       <conditions> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
       </conditions> 
       <action type="Rewrite" url="Ekonomija/Ekonomija.aspx?{R:1}={R:2}" /> 
      </rule> 
      <rule name="RedirectUserFriendlyURL2" stopProcessing="true"> 
       <match url="^Test2/Test2\.aspx$" /> 
       <conditions> 
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" /> 
        <add input="{QUERY_STRING}" pattern="^([^=&amp;]+)=([^=&amp;]+)$" /> 
       </conditions> 
       <action type="Redirect" url="{C:1}/{C:2}" appendQueryString="false" /> 
      </rule> 
      <rule name="RewriteUserFriendlyURL2" stopProcessing="true"> 
       <match url="^([^/]+)/([^/]+)/?$" /> 
       <conditions> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
       </conditions> 
       <action type="Rewrite" url="Test2/Test2.aspx?{R:1}={R:2}" /> 
      </rule> 
+0

Отредактировано сообщение .... – Milan

ответ

0

Он может работать с первым, но он никогда не будет работать со вторым.
Почему?

Потому что у вас есть два правила, соответствующие точно такие же условия: RewriteUserFriendlyURL1 и RewriteUserFriendlyURL2

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

Во всяком случае, я пытался упростить правила следующим образом:

<rule name="Redirect rule" stopProcessing="true"> 
    <match url="^(Ekonomija/Ekonomija|Test2/Test2)\.aspx$" /> 
    <conditions>               
     <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" /> 
     <add input="{QUERY_STRING}" pattern="^(\w+)=(\w+)$" /> 
    </conditions>            
    <action type="Redirect" url="{C:1}/{C:2}" appendQueryString="false" /> 
</rule> 
<rule name="Rewrite rule" stopProcessing="true"> 
    <match url="^(Ekonomija|Test2)/(\w+)$" /> 
    <conditions> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="{R:1}/{R:1}.aspx?{R:1}={R:2}" /> 
</rule> 

Перенаправление работает только когда

  • запрашиваемый URL либо Ekonomija/Ekonomija.aspx или Test2/Test2.aspx
  • метод, используемый для доступ к URL не был POST
  • строка запроса была только одной буквенно-цифровой последовательностью foll задолжал знаком равенства (=), за которым следует второй буквенно-цифровой последовательности

В этом случае мы перенаправить используя обратные ссылки из строки запроса (first sequence/second sequence).

Затем мы имеем переписывают правило работает, когда

  • запрашиваемый URL начинается с Ekonomija или Test2, следует косой чертой (/) и содержит один или более алфавитно-цифровой символ (ы) после
  • в запрошенный url не соответствует пути к файлу или каталогу на сервере

В этом случае мы переписываем с использованием обратных ссылок из запрошенного URL-адреса.

+0

Спасибо за ваш ответ, я пробую это решение, но получаю сообщение об ошибке «HTTP Error 404.0 - Not Found» – Milan

+0

Какой URL-адрес вы пытались? – cheesemacfly

+0

Я нашел, почему не работает код, и это не проблема в коде, но в моем запросе он содержит «ž, š, ć, _, -» .... Спасибо, и мне жаль, что я прошу об этом подробнее , но можете ли вы помочь мне переписать регулярное выражение для mach с этими словами, действительно не понимают эту область. спасибо – Milan

Смежные вопросы