Перезапись URL не работает должным образом - PullRequest
0 голосов
/ 09 марта 2012

Я пытаюсь переписать правило так, чтобы, если в URL не пришло .svc, оно переписало и добавило .svc в URL.

Это мои правила:

<rewrite>   
  <rules>
    <rule name="RemoveSVC" stopProcessing="true">
      <match url="localhost/RestApp/Services/([a-zA-Z0-9]*)/(.*)$" />    
      <action type="Rewrite" url="localhost/RestApp/Services/{R:1}.svc/{R:2}" 
              appendQueryString="true" logRewrittenUrl="true" />
    </rule>    
  </rules>
</rewrite>

Кто-нибудь может сказать мне, почему это правило не работает?

1 Ответ

1 голос
/ 12 марта 2012

Я думаю, что вы хотите:

<rewrite>   
  <rules>
    <rule name="RemoveSVC" stopProcessing="true">
      <match url="localhost/RestApp/Services/([a-zA-Z0-9]*)/(.*)" />    
      <action type="Rewrite" url="localhost/RestApp/Services/{R:1}.svc/{R:2}" 
              appendQueryString="true" logRewrittenUrl="true" />
    </rule>    
  </rules>
</rewrite>

Удалите знак $ на конце.

Я бы также избавился от части localhost/, потому что это будет работатьна вашем локальном компьютере разработчика при развертывании в производство он не будет больше localhost:

<match url="RestApp/Services/([a-zA-Z0-9]*)/(.*)" />
<action type="Rewrite" url="RestApp/Services/{R:1}.svc/{R:2}" 
        appendQueryString="true" logRewrittenUrl="true" />
...