Перезапись URL IIS при первоначальном запросе хоста - PullRequest
1 голос
/ 04 сентября 2011

У меня проблема с перезаписью URL-адреса интегрированного конвейера IIS7.Для моего конкретного сценария мне нужно переписать / перенаправить часть первоначального запроса следующим образом.

  1. Пользователь вводит http://savecontoso.com/files/123456789/somefile.html в адресную строку браузера.

  2. Пользователь перенаправлен на http://savecontso.com/default.aspx?url= (результаты url="default.aspx?url={R:1}")

В настоящее время это работает, как ожидается, только если я создаю первоначальный запрос как таковой, http://savecontoso.com/default.aspx/files/123456789/somefile.html.

Я должен отметить, что на сервере нет ни каталога /files/, ни /123456789/, ни файла somefile.html.Мне просто нужно, чтобы весь путь и имя файла были добавлены в строку запроса.

Это мой первый день работы с функциями перенаправления / перезаписи с использованием IIS вместо кода страницы позади, и я огляделся по всему learn.iis.net,Google и т.д. безрезультатно.Я понимаю, что переписывание происходит перед запросами страницы, но по какой-то причине мой конкретный код требует запроса страницы перед запуском перенаправления.

Я подозреваю, что это потому, что я не запускаю условия при первоначальном запросе?

<rewrite>
<rules>
<rule name="1" stopProcessing="true">
<match url="(.*)(/files/\d+/.*html$)" />
<action type="Redirect" redirectType="Permanent" url="default.aspx?url={R:1}" />
</rule>
</rules>
</rewrite>

1 Ответ

2 голосов
/ 05 сентября 2011

Скорее всего, он не работает из-за вашего шаблона совпадения:

  • {R:1} будет соответствовать (.*) в вашем шаблоне и никогда не будет совпадать files/123...
  • URL в шаблоне совпадения всегда начинается без начального слеша: должно быть files/\d+..., а не /files/\d+...

Попробуйте использовать этот вариант (у меня работает нормально):

<rule name="1" stopProcessing="true">
    <match url="^files/\d+/.*\.html$" />
    <action type="Redirect" url="default.aspx?url={R:0}" redirectType="Permanent" />
</rule>
...